Witam.
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;
$image_type = substr($img, -3
); $max_height = $height;
$dest = 'images/miniaturki';
$im_n=0;
for($im_n=0
, $n=sizeof($img_name); $im_n<$n; $im_n++){ $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;
}
}
?>