Napisałem sobie funkcję do tworzenia miniaturek w locie. Dla wyrównania rozmiaru miniaturek, tworzę sobie tło przezroczyste. Problem pojawia się, gdy miniaturyzowany obrazek posiada czarne tło. Po prostu tło czarne robi się białe i psuje mi miniature. W czym może być problem?
Poniżej przedstawiam kod:
<?php function createMiniImage($url, $width, $height, $alt){ $img = $url; $max_width = $width; $max_height = $height; $dest = 'images/miniaturki'; $im_n=0; $name = $img_name[$im_n]; } $image_to_resize = $img; if($image_size[0] < $image_size[1]){ $tryb = 'height'; } else { $tryb = 'width'; } switch($tryb){ case 'width': $ratio = $image_size[0]/$image_size[1]; if($image_size[0] > $max_width){ $new_image_width = $max_width; $new_image_height = $new_image_width / $ratio; } else { $new_image_width = $image_size[0]; $new_image_height = $image_size[1]; } break; case 'height': $ratio = $image_size[1]/$image_size[0]; if($image_size[1] > $max_height){ $new_image_height = $max_height; $new_image_width = $new_image_height / $ratio; } else { $new_image_width = $image_size[0]; $new_image_height = $image_size[1]; } break; } switch($image_type){ case 'jpg': $name .= '_w'.$new_image_width.'_h'.$new_image_height.'.jpg.gif'; $image = imagecreatefromjpeg($image_to_resize); $img_mini = imagecreatetruecolor($width, $height); $trnprt_indx = imagecolortransparent($img_mini); $trnprt_indx = imagecolorallocate($img_mini, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']); imagefill($img_mini, 0, 0, $trnprt_indx); imagecolortransparent($img_mini, $trnprt_indx); $imagewidth = $width; $imageheight = $height; $watermarkwidth = $new_image_width; $watermarkheight = $new_image_height; $startwidth = ($imagewidth/2) - ($watermarkwidth/2); $startheight = ($imageheight/2) - ($watermarkheight/2); imagecopyresampled($img_mini, $image, $startwidth, $startheight, 0, 0, $new_image_width , $new_image_height, $image_size[0], $image_size[1]); imagegif($img_mini, $dest.'/'.$name); imagedestroy($image); imagedestroy($img_mini); } else { if(($now - $mk) > 604800) { $image = imagecreatefromjpeg($image_to_resize); $img_mini = imagecreatetruecolor($width, $height); $trnprt_indx = imagecolortransparent($img_mini); $trnprt_indx = imagecolorallocate($img_mini, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']); imagefill($img_mini, 0, 0, $trnprt_indx); imagecolortransparent($img_mini, $trnprt_indx); $imagewidth = $width; $imageheight = $height; $watermarkwidth = $new_image_width; $watermarkheight = $new_image_height; $startwidth = ($imagewidth/2) - ($watermarkwidth/2); $startheight = ($imageheight/2) - ($watermarkheight/2); imagecopyresampled($img_mini, $image, $startwidth, $startheight, 0, 0, $new_image_width , $new_image_height, $image_size[0], $image_size[1]); imagegif($img_mini, $dest.'/'.$name); imagedestroy($image); imagedestroy($img_mini); } } break; } $img = '<img src="'.$dest.'/'.$name.'" alt="'.$alt.'" title="'.$alt.'" />'; return $img; } } ?>