Magento - Otomatik küçük gelen siyah arka plan çıkarma?

3 Cevap php

Bir Magento sitede, sadece ürün başına bir resim yükleme, ve kullanıyorum baz olarak, küçük ve küçük görüntüler. Ancak, benim resim kare değil, bu yüzden siyah bir arka plan yarattığı minik ilave alıyorum. Herhangi bir beyaz arka plan değiştirmek için nasıl bir fikir?

Bunun için arandı ancak herhangi bir yerde iyi bir cevap bulamıyorum ...

3 Cevap

Bunun için bir çözüm bulundu. Yan etkisi resim boyutlandırmak için kullanılan sınıf (hatta şeffaf olanları) beyaz ile tüm görüntüleri dolduracaktır olduğunu, ancak yine de saydam dolgu kullanmak değildir çünkü bu gerçekten Magento etkilemez. Yani sorunu çözmek için şunu yapın:

  1. Magento klasöründeki lib\Varien\Image\Adapter\Gd2.php git
  2. Bu satırı bulun

    $this->_fillBackgroundColor($newImage);
    

    ve bu hat ile değiştirin

    $this->_fillBackgroundColor($newImage,$frameWidth,$frameWidth);
    
  3. Bu satırı bulun

    private function _fillBackgroundColor(&$imageResourceTo)
    

    ve bu ile değiştirin

    private function _fillBackgroundColor(&$imageResourceTo,$w,$h)
    
  4. Bu kodu bulun

    if (!imagefill($imageResourceTo, 0, 0, $color)) {
        throw new Exception("Failed to fill image background with color {$r} {$g} {$b}.");
    }
    

    ve bu ile değiştirin

    imagefilledrectangle($imageResourceTo,0,0,$w,$h,$color);
    

O kadar. Sorun gd2 bazı setings çalışan değil PHP fonksiyon imagefill geliyor. Bu imagefilledrectangle kullanarak bir geçici çözüm olduğunu, ve benim için çalıştı. Çok sorunu çözer umarım.

Dan 4 noktası üzerinde düzeltme Adi's answer:

4. Bu kodu bul

if (!imagefill($imageResourceTo, 0, 0, $color)) { throw new Exception("Failed to fill image background with color {$r} {$g} {$b}."); }

ve ile değiştirin:

if (!imagefilledrectangle($imageResourceTo,0,0,$w,$h,$color)) {
    throw new Exception("Failed to fill image background with color {$r} {$g} {$b}.");

Magento kullanılan Varien_Image ölçekli görüntüsünün arka plan rengini ayarlamak için bir imkan sunuyor. Sen arka plan beyaz yapmak için (? Yöntemini yeniden boyutlandırmak) görüntü çıktısı önce de benzer bir kod yerde kullanabilirsiniz:

$image->backgroundColor(array(255, 255, 255));