2010-03-03 51 views
0

我想調整大小超過3000px的圖像的寬度,它上傳罰款,如果我不調整它,但只要我調整圖像,它不想上傳和調整大小,這很有趣,我似乎無法理解,因爲如果圖像的寬度很小,則everthing工作得很好。這有限制嗎?無法調整圖像與GDlib2

回答

1

試試這個......不使用GD,但我認爲它適用於你。

<?php 
function Image($image, $crop = null, $size = null) { 
$image = ImageCreateFromString(file_get_contents($image)); 

if (is_resource($image) === true) { 
$x = 0; 
$y = 0; 
$width = imagesx($image); 
$height = imagesy($image); 

/* 
CROP (Aspect Ratio) Section 
*/ 

if (is_null($crop) === true) { 
    $crop = array($width, $height); 
} else { 
    $crop = array_filter(explode(':', $crop)); 

    if (empty($crop) === true) { 
      $crop = array($width, $height); 
    } else { 
     if ((empty($crop[0]) === true) || (is_numeric($crop[0]) === false)) { 
       $crop[0] = $crop[1]; 
     } else if ((empty($crop[1]) === true) || (is_numeric($crop[1]) === false)) { 
       $crop[1] = $crop[0]; 
     } 
    } 

    $ratio = array(0 => $width/$height, 1 => $crop[0]/$crop[1]); 

    if ($ratio[0] > $ratio[1]) { 
     $width = $height * $ratio[1]; 
     $x = (imagesx($image) - $width)/2; 
    } 

    else if ($ratio[0] < $ratio[1]) { 
     $height = $width/$ratio[1]; 
     $y = (imagesy($image) - $height)/2; 
    } 

} 

/* 
Resize Section 
*/ 

if (is_null($size) === true) { 
    $size = array($width, $height); 
} 

else { 
    $size = array_filter(explode('x', $size)); 

    if (empty($size) === true) { 
      $size = array(imagesx($image), imagesy($image)); 
    } else { 
     if ((empty($size[0]) === true) || (is_numeric($size[0]) === false)) { 
       $size[0] = round($size[1] * $width/$height); 
     } else if ((empty($size[1]) === true) || (is_numeric($size[1]) === false)) { 
       $size[1] = round($size[0] * $height/$width); 
     } 
    } 
} 

    $result = ImageCreateTrueColor($size[0], $size[1]); 

if (is_resource($result) === true) { 
    ImageSaveAlpha($result, true); 
    ImageAlphaBlending($result, true); 
    ImageFill($result, 0, 0, ImageColorAllocate($result, 255, 255, 255)); 
    ImageCopyResampled($result, $image, 0, 0, $x, $y, $size[0], $size[1], $width, $height); 

    ImageInterlace($result, true); 
    ImageJPEG($result, null, 90); 
} 
} 

return false; 
} 

header('Content-Type: image/jpeg'); 
Image('image.jpg', '2:1', '1200x'); 

?>