收录日期:2020/02/20 18:45:41 时间:2016/07/15 11:38:27 标签:Framework
我现在在做一个把图片符号化存到DB中,再从DB中读出数据,直接在页面上显示的程序

写入数据库的时候的时候,我用的是file_get_contents()把图片转换成二进制数据

写入数据库我也试过别的方法,倒是也可以实现

但是从数据库中读取的时候,不存入文件,而是直接在页面显示的话,file_put_contents()
就不能用了

我曾用imagecreatefromstring()这个方法把图像读出来,再用ImageJpeg()复原

读取好用,但是显示的结果还是符号化的文件,不是图像啊!!!在这中间我还用了一个生产图像的方法

各位大侠还有别的高招吗?有何指教啊???
帮帮我吧!小妹在此有礼了!
顯示的時候先將在數據庫的二進制保存成一個臨時圖片文件,再讀出來
大概贴一下你用到的主要函数,看看有没有函数用错了,或是逻辑重复的地方。

一般ImageJpeg()最后都会保存为一个jpeg文件的。
引用 1 楼 tfxg 的回复:
顯示的時候先將在數據庫的二進制保存成一個臨時圖片文件,再讀出來


什么是临时文件?我现在是不想造成服务器负担,所以才不想生成文件保存的,
临时文件的话,用后可以直接删除,不占用空间吗?

怎么生成临时文件?我原来只用过file_put_contents()生成过文件,
但是生成后不能删除!
关注
引用 2 楼 cunningboy 的回复:
大概贴一下你用到的主要函数,看看有没有函数用错了,或是逻辑重复的地方。

一般ImageJpeg()最后都会保存为一个jpeg文件的。


生成二进制文件的时候,我用的是file_put_contents(),生成之后直接保存到了DB

读取得时候用的是
$im = imagecreatefromstring($data);
if ($im !== false) {
    //header('Content-Type: image/jpeg');
    imagejpeg($im);
    imagedestroy($im);
}
$data是直接从DB中读出的二进制数据
header('Content-Type: image/jpeg');是在CSS中定义的,所以这里没写!
但是显示的结果还是二进制文件!!
引用 5 楼 pk2457 的回复:
引用 2 楼 cunningboy 的回复:
大概贴一下你用到的主要函数,看看有没有函数用错了,或是逻辑重复的地方。

一般ImageJpeg()最后都会保存为一个jpeg文件的。


生成二进制文件的时候,我用的是file_put_contents(),生成之后直接保存到了DB

读取得时候用的是
$im = imagecreatefromstring($data);
if ($im !== false) {
    //header('Content-Type: image/jpeg');
    imagejpeg($im);
    imagedestroy($im);
}
$data是直接从DB中读出的二进制数据
header('Content-Type: image/jpeg');是在CSS中定义的,所以这里没写!
但是显示的结果还是二进制文件!!

在$im = imagecreatefromstring($data);前加$data = base64_decode($data);试试
引用 6 楼 cunningboy 的回复:
引用 5 楼 pk2457 的回复:
引用 2 楼 cunningboy 的回复:
大概贴一下你用到的主要函数,看看有没有函数用错了,或是逻辑重复的地方。

一般ImageJpeg()最后都会保存为一个jpeg文件的。


生成二进制文件的时候,我用的是file_put_contents(),生成之后直接保存到了DB

读取得时候用的是
$im = imagecreatefromstring($data);
if ($im !== false) {
    //header('Content-Type: image/jpeg');
    imagejpeg($im);
    imagedestroy($im);
}
$data是直接从DB中读出的二进制数据
header('Content-Type: image/jpeg');是在CSS中定义的,所以这里没写!
但是显示的结果还是二进制文件!!


在$im = imagecreatefromstring($data);前加$data = base64_decode($data);试试


显示的结果变了,但是还是不是图像
PS:我用的是Zend Framework,跟他有关所以不行的吗?
那就不用加base64_decode;

先试一下imagejpeg($im, "test.jpeg", 75);
看一下保存下来的test.jpeg文件对不对先。
引用 9 楼 cunningboy 的回复:
那就不用加base64_decode;

先试一下imagejpeg($im, "test.jpeg", 75);
看一下保存下来的test.jpeg文件对不对先。


我刚才试了一下,保存的应该是没有问题!
我这个函数是用在foreach中的,和这个有关系吗?
保存的时候,我把文件名也设成循环生成的了,所以生成的没有问题!
那不太清楚你的具体逻辑,你试试把header('Content-Type: image/jpeg');直接放在imagejpeg前面,不用css行不行。
我这个就是把数据库中读出来的数据,全部生成图片显示在网页上

用foreach就是按条循坏读出来得数据

foreach(this->$items as items)

    $data = $items['Image']; //Image为表中图像的字段

    $im = imagecreatefromstring($data);
    if ($im !== false) { 
        imagejpeg($im); 
    }
    else {
        echo 'エラーが発生しました。';
    }
endforeach;
引用 12 楼 pk2457 的回复:
我这个就是把数据库中读出来的数据,全部生成图片显示在网页上

用foreach就是按条循坏读出来得数据

foreach(this->$items as items)

    $data = $items['Image']; //Image为表中图像的字段

    $im = imagecreatefromstring($data);
    if ($im !== false) {
        imagejpeg($im);
    }
    else {
        echo 'エラーが発生しました。';
    }
endforeach;

从这里面没有看到你用header('Content-Type: image/jpeg');

没有header,二进制数据是不会解析为图片的。
我刚才又试了一下,即使不在循环中,保存到文件中可以,
但是直接在网页上也还是生成不了,前面加上header('Content-Type: image/jpeg');
也不行,不用jpeg文件,换成png的也还是不行!

无奈了我……
加上也还是不对吧,生成了一大堆类似于

?JFIF?CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ?    $.' ",#(7),01444'9=82<.342?  2!!22222222222222222222222222222222222222222222222222?y?"? 

这种的东西在网页上
这个会不会是你的Web服务器的设置有问题,没有打开对多媒体图像的支持?
关注ing

请教如何共享SQL数据库? c#在服务器端处理图像大小(size) 窗口传送数据给另一个窗口问题???? jsp如何控制多页面处理action? 驱动开发救急 控件事件在 IE 里不起作用,怎么解决啊 如何让DataGridView显示指定的列 SQL server 2000 安装程序配置服务器失败(附日志文件) 请高手帮忙 一个ASP数据库查询返回值的问题 急急急!!!! 定义结构中的结构数组问题 在javaScript中使用国际化资源包的标签的问题 如何使 ListCtrl 中大图标可以自由拖动位置 水晶報表内存佔用問題 ASP读PDF文件的内容 错误翻译 报表的内容能否修改 我要兼职!上海地区任何位置 这样的要求该怎么写呢 关于CRectTracker.帮忙 请问一个简单问题,谢谢! 数据库引擎找不到输入表或查询‘SF_图书归还 ’。   急,在线等!! 关于DOM解析xml,高分求教(顶者有分) 用程序如何直接选择word,直接打印 集成 Windows 身份验证问题(在线等!顶有分!) SmartUpload可不可以传一个指定文件?不要选择 我想搞个工作室,主要是接各种网站制作,和平面设计都可以..大家帮我想个名字 用asp做火车车次查询的网站 如何改变HP-UX TELNET空闲断线的参数 急聘网站设计开发人员