Mam tutaj działający kod który tworzy miniaturkę z obrazka jpg bez jej zapisywania - htaccess: RewriteRule ^obrazki/([^-]+)/([^-]+)$ imgs.php?size=$1&id=$2 [L]
<?PHP // kod działa idealnie
header("Content-type: image/jpeg");
$file = $_GET['id'];
$dir = 'imgs/';
$n_size = $_GET['size'];
function pic_res($file, $dir){
return $temp_res_tmp;
}
function photo_resize_without_saving($file, $dir, $n_size){
$pic_res = pic_res($file, $dir);
$pic_w = $pic_res[0]; $pic_h = $pic_res[1];
if(($pic_w > $pic_h)&&($pic_w > $n_size)){ //poziome
$pic_wn = $n_size;
$divisor = ($pic_w/$pic_wn);
$pic_hn = round($pic_h/$divisor); }
elseif(($pic_w < $pic_h)&&($pic_h > $n_size)){ //pionowe
$pic_hn = $n_size;
$divisor = ($pic_h/$pic_hn);
$pic_wn = round($pic_w/$divisor); }
else{ // jesli mniejszy niż 800px
$pic_wn = $pic_w;
$pic_hn = $pic_h;
}
$pic = imagecreatefromjpeg($dir.$file);
$new_size = imagecreatetruecolor($pic_wn, $pic_hn);
imagecopyresampled($new_size, $pic, 0, 0, 0, 0, $pic_wn, $pic_hn, imagesx($pic), imagesy($pic));
$save = NULL;
$new_photo = imagejpeg($new_size, $save, 100);
return $new_photo;
}
echo photo_resize_without_saving
($file, $dir, $n_size); ?>
teraz kolejna sprawa chciałbym tworzyć przezroczysty obrazek png na zasadzie
rozmiar jest stały $full = array('383','174'); width/height
na przezroczystym obrazku png tworzę miniaturkę jpg (nie poobcinaną - całość widoczna), która jest idealnie wycentrowana. Z centrowaniem sobie poradzę ale lipa wychodzi jeśli chcę zmienić jej wymiary - imagecopyresampled dla jpg
znalazłem coś takiego:
$dest = imagecreatefrompng('mapCanvas.png');
$src = imagecreatefromjpeg('si.jpg');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src, 17, 13, 0, 0, 60, 100, 100);
header('Content-Type: image/png'); imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
więc przerobiłem na:
header('Content-Type: image/png');
$file = $_GET['id'];
$dir = 'imgs/';
$full = array('383','174'); $max = array('363','154');
function pic_res($file, $dir){
return $temp_res_tmp;
}
function new_png($dir, $file, $max, $full){
$pic_res = pic_res($file, $dir);
$pic_w = $pic_res[0]; $pic_h = $pic_res[1];
if($pic_w > $pic_h){ //poziome
$pic_wn = $max[0];
$divisor = ($pic_w/$pic_wn);
$pic_hn = round($pic_h/$divisor); }
elseif($pic_w < $pic_h){ //pionowe
$pic_hn = $max[1];
$divisor = ($pic_h/$pic_hn);
$pic_wn = round($pic_w/$divisor); }
$dest = imagecreatefrompng('map.png');
$src = imagecreatefromjpeg($dir.$file);
//$new_size = imagecreatetruecolor($pic_wn, $pic_hn);
//imagecopyresampled($new_size, $src, 0, 0, 0, 0, $pic_wn, $pic_hn, imagesx($pic), imagesy($pic));
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src, 17, 13, 0, 0, 60, 100, 100);
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
}
echo new_png
($dir, $file, $max, $full);
Ktoś pomoże ?
Ten post edytował Tadek888 6.05.2011, 13:50:31