旋转和调整大图像大小的问题

时间:2015-12-29 14:16:51

标签: php gd

用户上传图片后,我正在尝试创建图片的缩略图。问题是,当我的脚本尝试将大图像加载到内存中以便重新采样(例如在2448px x 3264px的iPad上拍摄)时,调用imagecreatefromjpeg时内存不足。我无法增加可用内存,因为它是一个共享服务器,我出于同样的原因无法安装任何替代图像库。

$name = "upload/1/" . $filename;
move_uploaded_file($_FILES['myFile']['tmp_name'], $name);
createthumb($name, "upload/1/th_" . $filename, 230, 172);

function createthumb($name, $filename, $new_w, $new_h) {
 global $Postcode;

 $system=explode('.', $name);
 if (preg_match('/jpg|jpeg/',$system[1])) {
  $src_img=imagecreatefromjpeg($name);
 }
 if (preg_match('/png/',$system[1])) {
  $src_img=imagecreatefrompng($name);
 }

 $old_x=imageSX($src_img);
 $old_y=imageSY($src_img);
 if ($old_x > $old_y) {
  $thumb_w=$new_w;
  $thumb_h=$old_y*($new_h/$old_x);
 }
 if ($old_x < $old_y) {
  $thumb_w=$old_x*($new_w/$old_y);
  $thumb_h=$new_h;
 }
 if ($old_x == $old_y) {
  $thumb_w=$new_w;
  $thumb_h=$new_h;
 }
 $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
 imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y);

 if (preg_match("/png/",$system[1])){
  imagepng($dst_img, $filename); 
 }
 else {
  imagejpeg($dst_img, $filename); 
 }
 imagedestroy($dst_img); 
}

我有什么方法可以解决这个问题,但我不能增加内存或使用不同的图像库吗?

0 个答案:

没有答案