2015-03-26 5 views
0

Я пытаюсь преобразовать изображение png в jpg в пользовательский модуль с Magento. Загрузка выполняется, но когда я пытаюсь преобразовать pic, есть prblm. В Varien_file_uploader нет метода для преобразования, но в Varien_image есть. Стараюсь что:Конвертировать изображение png в jpg с Magento

$uploader = new Varien_File_Uploader('image');    
$uploader->setAllowedExtensions(array('jpg','png','gif','jpeg')); 
$uploader->setAllowRenameFiles(false); 
$uploader->setFilesDispersion(false); 
$uploader->save($path, $_FILES['image']['name']); 

$image = new Varien_Image($path . DS . $_FILES['image']['name']); 
$image->convert('jpeg'); 
$image->save($path, 'mypic.jpeg'); 

Любые идеи? Thx

ответ

0

нет идеи для функции magento, но следующая функция php преобразует PNG в JPG с прозрачностью в белый цвет.

$image = imagecreatefrompng($filePath); 
$bg = imagecreatetruecolor(imagesx($image), imagesy($image)); 
imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255)); 
imagealphablending($bg, TRUE); 
imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image)); 
imagedestroy($image); 
$quality = 50; // 0 = worst/smaller file, 100 = better/bigger file 
imagejpeg($bg, $filePath . ".jpg", $quality); 
imagedestroy($bg); 
+0

Эй, спасибо за ваш ответ. Я знаю, как это сделать в PHP, но я буду удивлен, если не будет никакой функции с Magento, чтобы сделать это! – RenishV8

+0

нет функции для преобразования изображения в magento –

+0

Это невероятно :(но thx :) – RenishV8

1

Я создал функцию, вы можете использовать ее как помощник. Если кто-то это нужно :)

class YourCompany_YourModule_Helper_Image_Data extends Mage_Core_Helper_Abstract{ 

    public function convert($ext, $path, $name, $newname = NULL) 
    { 
     $exploded = explode('.',$name); 
     $extoriginal = $exploded[count($exploded) - 1]; 

     switch($extoriginal) 
     { 
      case 'jpg': 
      case 'jpeg': 
       $image = imagecreatefromjpeg($path . $name); 
      break; 
      case 'png': 
       $image = imagecreatefrompng($path . $name); 
      break; 
      case 'gif': 
       $image = imagecreatefromgif($path . $name); 
      break; 
      case 'bmp': 
       $image = imagecreatefrombmp($path . $name); 
      break; 
     } 

     $bg = imagecreatetruecolor(imagesx($image), imagesy($image)); 
     imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255)); 
     imagealphablending($bg, TRUE); 
     imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image)); 
     imagedestroy($image); 
     $quality = 100; 

     $newname = ($newname == NULL) ? $exploded[0] : $newname; 

     switch($ext) 
     { 
      case 'jpg': 
      case 'jpeg': 
       $newimage = $path . $newname . ".jpg"; 
       imagejpeg($bg, $newimage, $quality); 
      break; 
      case 'png': 
       $newimage = $path . $newname . ".png"; 
       imagepng($bg, $newimage, $quality); 
      break; 
      case 'gif': 
       $newimage = $path . $newname . ".gif"; 
       imagegif($bg, $newimage, $quality); 
      break; 
      case 'bmp': 
       $newimage = $path . $newname . ".bmp"; 
       imagewbmp($bg, $newimage, $quality); 
      break; 
     } 
     imagedestroy($bg); 
     return $newimage; 
    } 
} 

В config.xml (из пользовательского модуля) добавить это в глобальном узле

<helpers> 
     <news> 
      <class>YourCompany_YourModule_Helper_Image</class> 
     </news> 
    </helpers> 

И использовать

$helper = Mage::helper('YourModule'); 
$helper->convert('jpg', $path, $yourimage); 

Наслаждайтесь :)

Смежные вопросы