Ben PHP için imagemagic'den yap-işlevleri yeterli olduğunu hissetmedim çünkü uzun zaman önce system(...)
ile ImageMagick kullanarak görüntüleri yeniden boyutlandırma için küçük bir kütüphane oluşturdu.
Ancak, son zamanlarda ben bir symfony projeye portuna bu vardı ve (eğer doğru hatırlıyorum) Ben sfThumbnailPlugin kullanmayı seçti. Örneğin, istenen boyutu belirlemek için - yani bu ne yazık ki ürün işlevselliği içermiyordu 300x300 px ve üzerlerine var o sığacak şekilde kırpılır. Kendimi bu işlevselliğini uygulamak için seçtik, ama yanlış bir şey gibi görünüyor.
Genişliği yüksekliğinden fazladır whe ben orada istenen boyutta bir görüntüyü yeniden boyutlandırmak zaman, oranlar vidalı olsun. Bu örneğe bir göz atın: http://i37.tinypic.com/9hkqrl.png - Bu örnekte üst sıra doğru oranlarda ve alt satır sorundur.
Bu örnekte, üst ve alt kesilmiş olmalıdır.
İşte kırpma (değişken adları kendi kendini açıklayıcı olabilir) yapılır bölümü için kodu:
<?php
if ($width/$height > $this->maxWidth/$this->maxHeight) {
// then resize to the new height...
$command .= ' -resize "x'.$this->maxWidth.'"';
// ... and get the middle part of the new image
// what is the resized width?
$resized_w = ($this->maxWidth/$height) * $width;
// crop
$command .= ' -crop "'.$this->maxHeight.'x'.$this->maxWidth.'+'.round(($resized_w - $this->maxWidth)/2).'+0"';
} else {
// or else resize to the new width
$command .= ' -resize "'.$this->maxHeight.'x"';
// ... and get the middle part of the new image
// what is the resized height?
$resized_h = ($this->maxHeight/$width) * $height;
// crop
$command .= ' -crop "'.$this->maxWidth.'x'.$this->maxHeight.
'+0+'.round(($resized_h - $this->maxHeight)/2).'" +repage';
}
Yanlış kod üretir eğer ifadenin ikinci parçasıdır.
Herkes benim için bu düzeltebilirsiniz? Açıkçası hesaplamalar yanlış.