PHP Resize 問題

<?php


function getResizeSmall($w,$h,$l,$id){

$p='';
if(file_exists($l)){
        $p=pathinfo($l);

        if( file_exists("spic/{$id}_{$w}_{$h}.jpg")) {
        }else{

                resizePic($l,$w,$h,"spic/{$id}_{$w}_{$h}.jpg");

        }

}
return "spic/{$id}_{$w}_{$h}.jpg";
}


function resizePic($src_img_name,$new_w,$new_h,$fname){

$imginfo=getimagesize($src_img_name);
$old_x=$imginfo[0];
$old_y=$imginfo[1];
if($imginfo['mime']=='image/jpeg'){$src_img=imagecreatefromjpeg($src_img_name);}
if($imginfo['mime']=='image/png'){$src_img=imagecreatefrompng($src_img_name);}
if($imginfo['mime']=='image/gif'){$src_img=imagecreatefromgif($src_img_name);}
if ($src_img){
        $dst_img=ImageCreateTrueColor($new_w,$new_h);
        imagefill ($dst_img,0,0,0);
        /*$thumb_w=$new_w;
        $thumb_h=$new_h;


imagecopyresized( $dst_img,$src_img,($new_w-$thumb_w)/2,($new_h-$thumb_h)/2,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
*/
//
$toW=$new_w;       
$toH=$new_h;       
$srcW=$old_x;
$srcH=$old_y;

$toWH=$toW/$toH;

$srcWH=$srcW/$srcH;

$ftoH=$toH;
$ftoW=$toW;

if ($toWH<=$srcWH) {
    $src_Y = 0;
  $src_X = ($srcW-$srcH*$toWH)/2;
  $srcW = $srcH*$toWH;
} else {
    $src_X = 0;
  $src_Y = ($srcH-$srcW/$toWH)/2;
  $srcH = $srcW/$toWH;
}
imagecopyresized($dst_img,$src_img,0,0,$src_X,$src_Y,$ftoW,$ftoH,$srcW,$srcH);

imagejpeg($dst_img,$fname);
imagedestroy($dst_img);
imagedestroy($src_img);
return 1;
}else{return 0;}

}
?>
$thumb_w=100;                  $thumb_h=100;   
宜家Resize出來是100 x100 搞到縮圖質量好低
請問如果想改到 Width=auto 請問如何改


Thank you very much

width = auto
用height來決定?

TOP

回復 2# kau



我試過唔生成 縮圖,只用原圖用css 控制 Height,width:auto 張圖附合原圖比例,就好睇,不過原圖 太大 Load 得好慢,宜家想生成縮圖,但係網上搵到呢段 code 係要指定 Width and Height,搞到張縮圖變哂型,

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

本帖最後由 eric33 於 2010-5-10 12:31 編輯

我想高度 fix 160px 配合我set 既 div 高度
width係想自動按原圖比例咁縮放,width : 係點寫先按比例?
我試過一定要 $thumb_w=x; $thumb_h=x;   都要填寫固定值先會縮圖,寫一項係唔得

TOP

本帖最後由 kau 於 2010-5-10 21:32 編輯

Is this correct?
$desired_height = 600;

$size_ratio = floor($original_width/$original_height);

$desired_width = $desired_height * $size_ratio;

TOP