Index: branches/RC/core/units/general/helpers/image_helper.php =================================================================== diff -u -N -r9256 -r9278 --- branches/RC/core/units/general/helpers/image_helper.php (.../image_helper.php) (revision 9256) +++ branches/RC/core/units/general/helpers/image_helper.php (.../image_helper.php) (revision 9278) @@ -60,21 +60,28 @@ if (function_exists('imagecreatefromjpeg')) { // try to resize using GD $resize_map = Array ( - 'image/jpeg' => 'imagecreatefromjpeg:imagejpeg', - 'image/gif' => 'imagecreatefromgif:imagegif', - 'image/png' => 'imagecreatefrompng:imagepng', + 'image/jpeg' => 'imagecreatefromjpeg:imagejpeg:jpg', + 'image/gif' => 'imagecreatefromgif:imagegif:gif', + 'image/png' => 'imagecreatefrompng:imagepng:png', ); $mime_type = $image_info['mime']; if (!isset($resize_map[$mime_type])) { return false; } - list ($read_function, $write_function) = explode(':', $resize_map[$mime_type]); + list ($read_function, $write_function, $file_extension) = explode(':', $resize_map[$mime_type]); $src_image_rs = @$read_function($src_image); if ($src_image_rs) { $dst_image_rs = imagecreatetruecolor($dst_width, $dst_height); + + if ($file_extension == 'png') { + // preserve transparency of PNG images + $transparent_color = imagecolorallocate($dst_image_rs, 0, 0, 0); + imagecolortransparent($dst_image_rs, $transparent_color); + } + imagecopyresampled($dst_image_rs, $src_image_rs, 0, 0, 0, 0, $dst_width, $dst_height, $image_info[0], $image_info[1]); return @$write_function($dst_image_rs, $dst_image, 100); }