PHP: Bir ölçeklenmis görüntünün boyutu

0 Cevap

Bu PHP: if more than ..px resize to.. bir takip soru

Gördüğünüz gibi boyutlandırır eğer:

if($width > 604 && $height > 453) {

Bu iyi çalışır genişlik ve yükseklik hem büyük olmasıdır.

Ancak, $ eni 604 bitti, ve $ yüksekliği 453 (örneğin 604x300) altında ise bu yeniden boyutlandırma prosedürü atlar m. Karşısında aynı (genişlik altında, yükseklik üzerinde olduğu) olduğunu. Bir fotoğrafa boyutları 500x900 ve yeniden boyutlandırma alırsa Ayrıca, yeniden boyutlandırma gerçekten çirkin olur. herhangi büyük bir düzeltme?

Ben bu lütfen ele gerektiği hakkında iyi bir öneri?

edit:

$rel_difference = array('width'=>0, 'height'=>0);

if($width > 604 || $height > 453) {
    if($width > 604) $rel_difference['width'] = ($width-604)/604;
    if($height > 453) $rel_difference['height'] = ($height-453)/453;

asort($rel_difference);

$newwidth = $width/(1+end($rel_difference));
$newheight = $height/(1+end($rel_difference)); 
$newwidth = round($newwidth);
$newheight = round($newheight);
$jpeg_quality = 90;
$src = "images/users/status/".$org_name;
$path_thumbs = "images/users/status/"; 
$thumb_path = $path_thumbs . '/' . $newfilename;

switch(exif_imagetype($move_me)) {
    case IMAGETYPE_GIF:
        $img_r = imagecreatefromgif($src);
    break;
    case IMAGETYPE_JPEG:
        $img_r = imagecreatefromjpeg($src);
    break;
    case IMAGETYPE_PNG:
        $img_r = imagecreatefrompng($src);
    break;
    default:
            echo "{";
            echo        "error: 'Not a image!'";
            echo "}";
        exit(0);
    break;
}
$dst_r = ImageCreateTrueColor( $newwidth, $newheight );

imagecopyresampled($dst_r, $img_r, 0, 0, 0, 0, $newwidth , $newheight, $width, $height);

imagejpeg($dst_r,$thumb_path,$jpeg_quality);

unlink($move_me);
    }

0 Cevap