原图和curl获取到图片源时的md5一致,但使用php中的fwrite后就不行.
问sf的朋友们: 如何用php保存图片的时候使得md5值不变!
代码如:
/*** 加载图片* */$save_dir = app.'tmp'.ds;$url = 'http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png';$img = http_client_request( $url );echo 'curl获取的二进制流文件md5值:
'.md5($img); //图片md5$fp2=@fopen($save_dir.'baidu-save.png','a');fwrite($fp2,$img);fclose($fp2);unset($img,$url);echo \n;$fmd5 = '通过fwrite保存图片md5:
'.md5_file($save_dir.'baidu-save.png');echo $fmd5;echo '原图md5:
'.md5_file($save_dir.'baidu-org.png');
结果如:
curl获取的二进制流文件md5值:
329b15e8ba7234317dc663f8ee663702
通过fwrite保存图片md5:
d477312948ef7bd72c4209b8db707f68
原图md5:
329b15e8ba7234317dc663f8ee663702
回复内容: 使用php下载图片的时候遇到md5问题, 源图片通过http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png下载,
原图和curl获取到图片源时的md5一致,但使用php中的fwrite后就不行.
问sf的朋友们: 如何用php保存图片的时候使得md5值不变!
代码如:
/*** 加载图片* */$save_dir = app.'tmp'.ds;$url = 'http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png';$img = http_client_request( $url );echo 'curl获取的二进制流文件md5值:
'.md5($img); //图片md5$fp2=@fopen($save_dir.'baidu-save.png','a');fwrite($fp2,$img);fclose($fp2);unset($img,$url);echo \n;$fmd5 = '通过fwrite保存图片md5:
'.md5_file($save_dir.'baidu-save.png');echo $fmd5;echo '原图md5:
'.md5_file($save_dir.'baidu-org.png');
结果如:
curl获取的二进制流文件md5值:
329b15e8ba7234317dc663f8ee663702
通过fwrite保存图片md5:
d477312948ef7bd72c4209b8db707f68
原图md5:
329b15e8ba7234317dc663f8ee663702
是不是因为已经存在 baidu-save.png,然后 fopen 用了参数 'a',于是加到尾部了。
改为 'w' 或者 'wb' 试试。
xxd logo_white_ee663702.png > logo_white_ee663702.hexxxd baidu-save.png > baidu-save.hexdiff logo_white_ee663702.hex baidu-save.hex
fwrite($fp2,md5($img));
