如何利用函式,将上传后的图片自动缩小制成新图片

Home Home
引用 | 编辑 ruby0305
2007-06-12 17:47
楼主
推文 x0
这是在试验把伺服器上已存在的图片,自动新制一个缩小后的图片

我一直错在Imagecopyresized()这行。查了很久也查不到原因。
Warning: imagecopyresized(): supplied argument is not a valid Image resource in /hd2/home/frankie/_www_/bnw_web/test_events.php on line 94

而且我觉得,这函式并不是我真正的需求,只是我找不到更适合的,请各位前辈教教我,有那些函式可以
满足我的需求。

需求:上传图片后(已做好)程式自动再制一张缩小图,另存新档,存档的地方可以选择的话是较好的
拜托各位大大了,我真的找好久,找不到适合的函式可以用。谢谢

复制程式
              $size=GetImageSize("promo_img/".$pic_name);
              if (sizeof($size) !="")
              {
                     $old_width = $size[0];
                     $old_height = $size[1];
              
                     $pic_range =        $size[0] /160;
                     if($pic_range != 0)
                     {
                            $width =  $size[0] /$pic_range;
                            $height =  $size[1] /$pic_range;
                     }       
                     // 下面两个变数分别储存缩图的宽度与高度 
                     $newWidth = $width ;
                     $newHeight = $height; 
                     echo $newWidth ."&&". $newHeight ."&&". $old_width ."&&". $old_height."____________<br>";

                     // 读入原来大图片的资料 
                     $origImg = "promo_img/aa.jpg"; 
              $newImg = $article_sn .$origImg;
                     $newImg =              ImageCreateFromJPEG($origImg);  
                     ImageCopyResized($newImg,$origImg,0,0,0,0,$newWidth,$newHeight,$old_width,$old_height);               
                     ImageJPEG($newImg);
                     ImageDestroy($newImg);                     
              }


献花 x0
引用 | 编辑 ruby0305
2007-06-14 17:02
1楼
  
我找到方法了,虽然没有前辈指点,但我还是说声谢谢......... 表情

献花 x0
引用 | 编辑 笑笑
2007-06-15 09:07
2楼
  
这个方法可以把图缩小,不过品质会比较不好,如果主机有 ImageMagick 支援,用 ImageMagick 去缩小,图会比较好看..

复制程式
<?php 
$w="240"; //自行设定的缩图宽度
$h="320"; //自行设定的缩图高度
if($_FILES['file']['type']=="image/pjpeg" || $_FILES['file']['type']=="image/gif" || $_FILES['file']['type']=="image/png") {
if($_FILES['file']['type']=="image/pjpeg") {
$filename=substr(rand(0,999999999999),1,7).".gif"; //随机取档名..我的习惯啦 ^^||
}
if($_FILES['file']['type']=="image/gif") {
$filename=substr(rand(0,999999999999),1,7).".gif";
}
if($_FILES['file']['type']=="image/png") {
$filename=substr(rand(0,999999999999),1,7).".png";
}
$size=$w."x".$h;
copy($_FILES['file']['tmp_name'],"/home/caisse/case/kf/data/file/b".$filename); //将暂存档copy至自己定义的目录..因为小弟大小图都想要 ^^
$big_image="/home/caisse/case/kf/data/file/b".$filename;
$small_image="/home/caisse/case/kf/data/file/s".$filename;
$exec_str="/usr/bin/convert '-geometry' ".$size." ".$big_image." ".$small_image; //注意"跟'唷
exec($exec_str);
} else {
echo "请上传图片";
}
?>
<form action="#" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="file">
<input type="submit" name="Submit" value="送出">
</form>
<?php if($_FILES) { ?>
原始图 <img src="/data/file/b<?php echo $filename; ?>"> <br>
裁切后的图 <img src="/data/file/s<?php echo $filename; ?>"> 
<?php } ?>

转载自 http://www.php5.idv.tw/modules.php?mod=books&act=show&shid=912

献花 x0