2010-04-12 2 views
1

У меня возникли проблемы с созданием миниатюры из загруженного изображения, моя проблемаСоздания JPG пальца с PHP

(я) качество (б) урожай

http://welovethedesign.com.cluster.cwcs.co.uk/phpimages/large.jpg http://welovethedesign.com.cluster.cwcs.co.uk/phpimages/thumb.jpg

Если вы выглядите, качество очень плохое, и урожай берется сверху и не является изменением размера исходного изображения, хотя эти десятины означают, что он пропорционален.

Оригинал 1600px широкий 1100px высокий.

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

$thumb = 
$targetPath."Thumbs/".$fileName; 

    $imgsize = 
getimagesize($targetFile); $image = 
imagecreatefromjpeg($targetFile); 
    $width = 200; //New width of image 
$height = 138; //This maintains 
proportions 

    $src_w = $imgsize[0]; $src_h = 
$imgsize[1]; 



$thumbWidth = 200; $thumbHeight = 
138; // Intended dimension of thumb 

// Beyond this point is simply code. 

$sourceImage = 
imagecreatefromjpeg($targetFile); 
$sourceWidth = imagesx($sourceImage); 
$sourceHeight = imagesy($sourceImage); 

$targetImage = 
imagecreate($thumbWidth,$thumbHeight); 
imagecopyresized($targetImage,$sourceImage,0,0,0,0,$thumbWidth,$thumbWidth,imagesx($sourceImage),imagesy($sourceImage)); 

//imagejpeg($targetImage, 
"$thumbPath/$thumbName"); 
imagejpeg($targetImage, $thumb); 

chmod($thumb, 0755); 
+1

для лучшего качества использования 'imagecopyresampled()': http://www.php.net/imagecopyresampled –

+0

Практически такое же качество, как и раньше, в основном я занимаюсь разработкой CF, но, похоже, я помню способ сделать это, позволяет вставить качество – Ross

+0

Не ошибетесь, но примерный код, который вы вставили, беспорядок. Вы должны попытаться удалить пух и посмотреть, не решает ли он какую-либо проблему, по крайней мере, если это не поможет, чтобы другим было легко увидеть проблему сразу. – zaf

ответ

1

Каждый раз, когда у создать миниатюру ДОИ изображения должен идти низко и, таким образом, это не представляется возможным, чтобы иметь такое же качество, но и может проверить imagecreatetruecolor (http://in2.php.net/manual/en/function.imagecreatetruecolor.php) для улучшения

1

Вы» re используя неправильную переменную для высоты изображения.

imagecopyresized($targetImage,$sourceImage,0,0,0,0,$thumbWidth,$thumbWidth,imagesx($sourceImage),imagesy($sourceImage)); 

Должно быть:

imagecopyresized($targetImage,$sourceImage,0,0,0,0,$thumbWidth,$thumbHeight,imagesx($sourceImage),imagesy($sourceImage)); 

Это должно улучшить качество изображения, но вы должны использовать imagecopyresampled для изменения размера и использовать параметр качества при использовании функции imagejpeg() при сохранении на диск.

+0

спасибо, что получил приемлемый результат. – Ross

+0

@Ross, если этот ответ решит вашу проблему, примите его как правильный ответ –

+0

С помощью upvote или двух! ;) – zaf

0

Вы бы не волновались, если бы вы использовали Thumbnailer.

$th=new Thumbnailer("your-photo.jpg"); 
$th->thumbSymmetricWidth(200)->save("your-thumb.jpg"); 

Качество превосходное. Вы также можете обогнуть углы.