(Boşluk ekleyerek) görüntüleri Pixelating / upscaling önlemek için php img resizer sınıfı değiştirmek

1 Cevap

Benim web sitesi gerektirir farklı büyüklükteki görüntüler oluşturmak için bu php sınıfı (http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php) kullanıyorum.

Ben resizeToWidth() yöntemi kullanıyorum.

Her şey orijinalinden daha büyük bir çıkış genişliği talep ediyorsam, o zaman görüntü upscaled ve boyutları karşılamak için pikselli olduğu için dışında harika.

What's the best way of, if the image is too small, keeping the original image and padding out the background/cavas with white space to meet required width?

 function resizeToWidth($width) {
  $ratio = $width / $this->getWidth();
  $height = $this->getheight() * $ratio;
  $this->resize($width,$height);}

aramalar:

 function resize($width,$height) {
  $new_image = imagecreatetruecolor($width, $height);
  imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
  $this->image = $new_image; } 

Ben ihtiyacım düşünüyorum:

  1. ResizeToWidthStatement bir if ifadesi
  2. boyutlandırmayla ekstra bir parametre yani 'ped = true' () yöntemi
  3. Görüntüyü merkezleri ve boşluk ekler resize () yöntemi bir şey

herhangi bir fikir?

1 Cevap

Sen doğru yoldasın. Yukarı boyutlandırma kontrol edeceğiniz resizeToWidth içine bir koşullu onay işareti koyun.

Eğer yastık isterseniz yeniden boyutlandırma yönteminde, ilk önce yeni, daha büyük boyutlarda yeni bir imaj oluşturmak, daha sonra merkez noktasını anlamaya ( ( new_image_width - old_image_width ) / 2 ) ve imagecopy bu yeni için yer.