Sorun php ile jpg başparmağını yaratıyor

3 Cevap php

Yüklenen görüntü bir küçük resim oluşturma sorunları yaşıyorum, benim sorunum

(i) the quality (ii) the crop

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

Eğer bakarsanız kalitesi çok kötü ve ekin üst alınır ve orantılı ölçüler anlamına rağmen orijinal görüntünün bir boyutlandırma değildir.

Orijinal yüksek 1100px tarafından 1600px genişliğinde olduğunu.

Herhangi bir yardım mutluluk duyacağız.

$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

/ / Bu noktanın ötesinde sadece kodudur.

$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);

3 Cevap

U bir minik resmin DPI oluşturmak her zaman düşük gitmek zorunda ve bu nedenle aynı kalitede olması mümkün değildir, ancak u imagecreatetruecolor kontrol edebilirsiniz (http://in2.php.net/manual/en/function.imagecreatetruecolor . php) iyileştirme için

Sen, görüntü yüksekliği için yanlış değişkeni kullanılarak ediyoruz.

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

Olmalıdır:

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

Bu görüntü kalitesini iyileştirmek gerekir ama diske kaydetme () fonksiyonu imagejpeg kullanırken boyutlandırma için imagecopyresampled kullanımı ve kalite parametresini kullanmalısınız.

Eğer Thumbnailer kullanmak istiyorsunuz eğer endişe olmaz.

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

Kalitesi süper. Ayrıca köşeleri tamamlayabilirler.