关于使用GD库进行图像缩放的问题

lyrebird 2006-06-05 09:38:34
我用GD库对网友上传的照片(数码相机或手机拍的)进行处理时,先通过代码对其进行缩小生成一张预览图。但发现很多传上来的照片(.jpg格式)缩小成预览图后,就变成一张全黑的图片,上面什么都没有了,点击查看原图却没有问题。请问各位大虾有没有遇到过这种问题呢?该如何解决呢?
我的部分程序如下:

$scr_size=getimagesize($targetpath."/".$newfilename);
$dstx=80;
$dsty=80*($scr_size[1]/$scr_size[0]); //目的文件的高应该和原图等比例缩小
$dst_im=imagecreatetruecolor($dstx,$dsty);
$src_im=imagecreatefromjpeg($targetpath."/".$newfilename);
imageCopyResampled($dst_im,$src_im,0,0,0,0,$dstx,$dsty,$scr_size[0],$scr_size[1]);
imagejpeg($dst_im,$targetpath."/pre/".$newfilename);


另外,还有个问题,有时候明明用户传上来的是jpg格式的图像,且能在电脑上正常打开,可用上面代码进行处理时imagecreatefromjpeg()却报is not avalid JPEG file的错误,请大家帮帮忙吧,小弟在此谢过了~~~~~
...全文
397 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyrebird 2006-06-15
  • 打赏
  • 举报
回复
最后还是改用magickwand来做缩略图了,多谢楼上各位
indexroot 2006-06-08
  • 打赏
  • 举报
回复
偶的
PHP Version 5.1.1 Apache/2.2.0 (Win32)

gd_info()

Array
(
[GD Version] => bundled (2.0.28 compatible)
[FreeType Support] => 1
[FreeType Linkage] => with freetype
[T1Lib Support] => 1
[GIF Read Support] => 1
[GIF Create Support] => 1
[JPG Support] => 1
[PNG Support] => 1
[WBMP Support] => 1
[XPM Support] =>
[XBM Support] => 1
[JIS-mapped Japanese Font Support] =>
)
lyrebird 2006-06-08
  • 打赏
  • 举报
回复
我刚才从国外网站查了下,好像有这个问题的朋友也不少,但也没有个解决办法。请问大家如果没有遇到过这种情况的话,用的GD都是哪个版本的呢
indexroot 2006-06-07
  • 打赏
  • 举报
回复
程序没有问题,可能GD有问题,试试
换个GD | 重装php
lyrebird 2006-06-07
  • 打赏
  • 举报
回复
另外,imagecreatetruecolor和imagecopyresampled这几个函数我这里可以用的,装的就是GD2
lyrebird 2006-06-07
  • 打赏
  • 举报
回复
各位大虾,部分图片缩小后变全黑的问题还是没有解决啊~~~~是不是和原图象素啥的有关系呢
linjianwu 2006-06-05
  • 打赏
  • 举报
回复
還有圖片最好設為RGB格式。php里的GD庫要裝。回答完畢
linjianwu 2006-06-05
  • 打赏
  • 举报
回复
發個代碼給你吧!
//*************upload.php*******************
if(empty($upfile)){
print("No file was transfered!n沒有文件");
exit;
}
$image_path=$upfile;//上頁傳過來的圖片名字
$image_info=getimagesize($image_path);
if($image_info[2]==2)
{$image2=imagecreatefromjpeg($image_path);
}
else if($image_info[2]==1){
$image2=imagecreatefromgif($image_path);
}
else{print("祥諉忳腔芞ㄐ");exit;}
if(empty($image2)){print("炵苀渣昫ㄛ笭彸");exit;}
$image2_x=imagesx($image2);
$image2_y=imagesy($image2);
if($image2_x==$image2_y){
$x=150;
$y=0;
}
else if($image2_x>$image2_y){
$x=150;
$y=intval(150*$image2_y/$image2_x);
}
else{
$y=150;
$x=intval(150*$image2_x/$image2_y);
}
$image1=imagecreatetruecolor($x,$y);
imagecopyresized($image1,$image2,0,0,0,0,$x,$y,$image2_x,$image2_y);
$Img = imagejpeg($image1);
//***********************************************************
因為在繫體底下。一些中文沒辦法顯示了。也差不多這個意思。你把代碼考過去。然后用如下調用:
<img src="../upload.php?file=admin/<?=$StrPath?>" border="0" width="110">在這里width不設也可以。
lyrebird 2006-06-05
  • 打赏
  • 举报
回复
回楼上的,我看过网上的那些代码,和我的一样啊
linjianwu 2006-06-05
  • 打赏
  • 举报
回复
在網上搜索一下。縮略圖的。拿過來用就可以了。自已再改一下。很簡單。。。我以前也跟你一樣有同樣的問題。。現在解決了。
smartygg 2006-06-05
  • 打赏
  • 举报
回复
缩图成黑的不知道为什么,不过你把GIF的文件直接改名成jpg在WINDOWS下也能正常显示
不过文件头信息并没有改,所以处理的时候出错
lymzyc 2006-06-05
  • 打赏
  • 举报
回复
留个脚印,正好过几天要用下,参考参考
indexroot 2006-06-05
  • 打赏
  • 举报
回复
不好意思
最后一行改成
(function_exists(imageCopyResampled))?imageCopyResampled($dst_im,$src_im,0,0,0,0,$dstx,$dsty,$scr_size[0],$scr_size[1]):imagecopyresized($dst_im,$src_im,0,0,0,0,$dstx,$dsty,$scr_size[0],$scr_size[1]);
indexroot 2006-06-05
  • 打赏
  • 举报
回复
GD库2.0.1以上才能使用imagecreatetruecolor和imagecopyresampled

(imagecopyresampled比imagecopyresized生成图像的品质好很多,但需要GD2支持)


$dst_im=imagecreatetruecolor($dstx,$dsty);

$src_im=imagecreatefromjpeg($targetpath."/".$newfilename);

imageCopyResampled($dst_im,$src_im,0,0,0,0,$dstx,$dsty,$scr_size[0],$scr_size[1]);

改为这样写可以兼容GD1

$dst_im=(function_exists(imagecreatetruecolor))?imagecreatetruecolor($dstx,$dsty):imagecreate($dstx,$dsty);

$src_im=imagecreatefromjpeg($targetpath."/".$newfilename);

(function_exists(imagecreatetruecolor))?imageCopyResampled($dst_im,$src_im,0,0,0,0,$dstx,$dsty,$scr_size[0],$scr_size[1]):imagecopyresized($dst_im,$src_im,0,0,0,0,$dstx,$dsty,$scr_size[0],$scr_size[1]);


indexroot 2006-06-05
  • 打赏
  • 举报
回复
你的程序偶这里测试没有问题,能正常生成缩图

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧