Niestety mając oryginalne zdjęcie w formacie PNG, przy zmniejszaniu zdjęcie traci przezroczystość i powstaje czarne tło:( idealnym rozwiązniem byłaby albo ta przezroczystośc albo, żeby chociaż to tło było białem.
Mógłby ktoś spjrzeć na ten kod, co jest nie tak? czytałem o tych wszystkich funkcjach odnośnie zmniejszania obrazów typu. imagecreatetruecolor etc. ale nie mogę dojść do teego co moze być nie tak. Poniżej dwa pliki:
1. images.php:
<?php /** * @version $Id: $ * @author Codextension * @package Joomla! * @subpackage Module * @copyright Copyright (C) 2008 - 2012 by Codextension. All rights reserved. * @license GNU/GPL, see LICENSE */ // no direct access if(class_exists('JLImageHelper') != true){ class JLImageHelper extends JObject { switch ($type) { case 'jpeg': case 'jpg': $imageCreateFunc = 'imagecreatefromjpeg'; break; case 'png': $imageCreateFunc = 'imagecreatefrompng'; break; case 'bmp': $imageCreateFunc = 'imagecreatefrombmp'; break; case 'gif': $imageCreateFunc = 'imagecreatefromgif'; break; case 'vnd.wap.wbmp': $imageCreateFunc = 'imagecreatefromwbmp'; break; case 'xbm': $imageCreateFunc = 'imagecreatefromxbm'; break; default: $imageCreateFunc = 'imagecreatefromjpeg'; } return $imageCreateFunc; } switch ($type) { case 'jpeg': $imageSaveFunc = 'imagejpeg'; break; case 'png': $imageSaveFunc = 'imagepng'; break; case 'bmp': $imageSaveFunc = 'imagebmp'; break; case 'gif': $imageSaveFunc = 'imagegif'; break; case 'vnd.wap.wbmp': $imageSaveFunc = 'imagewbmp'; break; case 'xbm': $imageSaveFunc = 'imagexbm'; break; default: $imageSaveFunc = 'imagejpeg'; } return $imageSaveFunc; } $sWidth = $info[0]; $sHeight = $info[1]; if ($sHeight / $sWidth > $dHeight / $dWidth) { $width = $sWidth; $sx = 0; } else { $height = $sHeight; $sy = 0; } if (!$crop) { $sx = 0; $sy = 0; $width = $sWidth; $height = $sHeight; } //echo "$sx:$sy:$width:$height";die(); $imageSaveFunc = self::getImageSaveFunction(JFile::getExt($imgDest)); $sImage = $imageCreateFunc($imgSrc); $dImage = imagecreatetruecolor($dWidth, $dHeight); imagecopyresampled($dImage, $sImage, 0, 0, $sx, $sy, $dWidth, $dHeight, $width, $height); if( $imageSaveFunc=='imagepng' ){ $invertScaleQuality = 9 - $scaleQuality; $imageSaveFunc($dImage, $imgDest, $invertScaleQuality); }else{ $imageSaveFunc($dImage, $imgDest, 100); } } if (JFile::exists($imgDest)) { // Image is created if (($info[0] == $width) && ($info[1] == $height)) { return; } } if (JFile::exists($imgSrc)) { self::resize($imgSrc, $imgDest, $width, $height, $crop); } } } } ?>
drugiego pliku nie mogę wysłac bo jest za duży umieściłem go pod tym linkiem: http://wklej.se/5a6d