2013-06-15 3 views
0

iam пытается изменить размер изображения с помощью php! Я не получаю никаких ошибок, но не сохранит миниатюру на моем сервере. Код:Изменение размера изображения и сохранение с помощью imagejpeg()

#Resize image 
function resize($input_dir, $cur_file, $newwidth, $output_dir) 
{ 
    $filename = $input_dir.'/'.$cur_file; 
    $format=''; 
    if(preg_match("/.jpg/i", $filename)) 
    { 
     $format = 'image/jpeg'; 
    } 
    if (preg_match("/.gif/i", $filename)) 
    { 
     $format = 'image/gif'; 
    } 
    if(preg_match("/.png/i", $filename)) 
    { 
     $format = 'image/png'; 
    } 
    if($format!='') 
    { 
     list($width, $height) = getimagesize($filename); 
     $newheight=$height*$newwidth/$width; 
     switch($format) 
     { 
      case 'image/jpeg': 
      $source = imagecreatefromjpeg($filename); 
      break; 
      case 'image/gif'; 
      $source = imagecreatefromgif($filename); 
      break; 
      case 'image/png': 
      $source = imagecreatefrompng($filename); 
      break; 
     } 
     $thumb = imagecreatetruecolor($newwidth,$newheight); 
     imagealphablending($thumb, false); 
     imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
     imagejpeg($thumb, 'thumb_'.$cur_file); 
    } 
} 

Моя функция выглядит следующим образом:

resize(plugins_url().'/MyImagePlugin/img', 'testimg.jpg', "200"); 

Изображение находится в папке "IMG" в моем плагине Dic. Проводная вещь в том, что я не получаю никаких ошибок! CHMOD - 777 для папки img.

Любая помощь будет оценена по достоинству.

ответ

2

Вы не используете путь при сохранении изображения в строке:

imagejpeg($thumb, 'thumb_'.$cur_file); 

$cur_file установлен в testing.jpg.

Вы должны добавить путь к имени файла, или он будет attempoting для его создания в любом текущем каталоге.

Изменения что-то вроде:

function resize($input_dir, $cur_file, $newwidth, $output_dir = "") 
{ 
    if($output_dir == "") $output_dir = $input_dir; 

    ..... 

     imagejpeg($thumb, $output_dir.'/thumb_'.$cur_file); 
    } 
} 
+0

Я все это пробовал. с 'imagejpeg ($ thumb, $ input_dir. '/ thumb _'. $ cur_file);' Я получаю сообщение об ошибке: 'Warning: imagejpeg(): Невозможно открыть '...' для записи: Нет такого файла или каталога' Но я использую путь от $ input_dir, и этот путь на 100% правильный! – Ponch0

+0

Я не совсем понимаю, как ваша функция/способ ее вызова использует $ input_dir –

+0

'$ filename = $ input_dir. '/'. $ Cur_file;' Оба сохраняются в $ filename. – Ponch0

0

Я знаю, что это не ваш способ сделать, но IAM уверены, что это может помочь вам.

if (isset($_FILES['image']['name'])) 
{ 
    $saveto = "dirname/file.jpg"; 
    move_uploaded_file($_FILES['image']['tmp_name'], $saveto); 
    $typeok = TRUE; 
    switch($_FILES['image']['type']) 
    { 
    case "image/gif": $src = imagecreatefromgif($saveto); break; 
    case "image/jpeg": // Both regular and progressive jpegs 
    case "image/pjpeg": $src = imagecreatefromjpeg($saveto); break; 
    case "image/png": $src = imagecreatefrompng($saveto); break; 
    default: $typeok = FALSE; break; 
    } 
    if ($typeok) 
    { 
    list($w, $h) = getimagesize($saveto); 
    $max = 500; 
    \\ you can change this to desired product for height and width. 
    $tw = $w; 
    $th = $h; 
    if ($w > $h && $max < $w) 
    {  
    $th = $max/$w * $h; 
    $tw = $max; 
    } 
    elseif ($h > $w && $max < $h)  
    { 
    $tw = $max/$h * $w; 
    $th = $max; 
    } 
    elseif ($max < $w) 
    { 
    $tw = $th = $max; 
    } 
    $tmp = imagecreatetruecolor($tw, $th);  
    imagecopyresampled($tmp, $src, 0, 0, 0, 0, $tw, $th, $w, $h); 
    imageconvolution($tmp, array(// Sharpen image 
    array(-1, -1, -1), 
    array(-1, 16, -1), 
    array(-1, -1, -1) 
), 8, 0); 
    imagejpeg($tmp, $saveto); 
    imagedestroy($tmp); 
    imagedestroy($src); 
    } 
    } 
Смежные вопросы