teraz widzę o co chodzi, nie pomniejsza Ci plików jpg ponieważ dla plikom jpg tylko zmieniasz nazwę:
if ($type == 2) {
rename($ImageName, $newfilename); } else {
if ($type == 1) {
$image_old = imagecreatefromgif($ImageName);
} elseif ($type == 3) {
$image_old = imagecreatefrompng($ImageName);
}
// skonwertuj obraz do formatu JPG
$image_jpg = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($image_jpg, $image_old, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_jpg, $newfilename);
imagedestroy($image_old);
imagedestroy($image_jpg);
}
if ($type == 2) {
rename($ImageName, $newfilename); } else {
a kod pomniejszający napisany później nie jest uruchamiany
dodatkowo jeszcze jak najpierw pomniejszasz obrazek a potem robisz z pomniejszonego miniaturkę, to w funkcji imagecopyresampled musisz zmienić źródłową długość i źródłową wysokość na te ze źródłowego obrazka bo inaczej będziesz miał czarne paski w miniaturce
tj musisz to zmienić tak:
// utwórz miniaturkę
$largeimage = imagecreatefromjpeg($newfilename);
$thumb = imagecreatetruecolor($thumb_width, $thumb_height);
imagecopyresampled($thumb, $largeimage, 0, 0, 0, 0, $thumb_width, $thumb_height, $new_width, $new_height);
imagejpeg($thumb, $newthumbname);
imagedestroy($largeimage);
imagedestroy($thumb);
albo robić miniaturkę z oryginalnego obrazka który był uploadowany
Tu masz ostateczny działający testowy kod który zrobiłem:
<form action='' method='POST' enctype='multipart/form-data'>
<input name='image_filename' type='file'>
<input type='submit' value='wyslij'>
</form>
<?php
// udostępnienie zmiennych
$img_nazwa = 'asd.jpg';
$img_fot = "fot/";
$img_min = "fot/min/";
$image_tempname = $_FILES['image_filename']['name'];
// umieszczenie obrazu i sprawdzenie jego formatu
$ImageDir = "fot/";
// folder minaturek
$ImageThumb = $ImageDir . "min/";
$ImageName = $ImageDir . $image_tempname;
// pobranie informacji na temat umieszczonego obrazu
list
($width, $height, $type, $attr) = getimagesize($ImageName);
if ($type > 3) {
echo "Przykro nam, ale przesłany obraz nie jest w formacie GIF, JPG lub " . "PNG.<br>";
echo "Kliknij przycisk 'Wstecz' w przeglądarce i spróbuj ponownie."; } else {
// wstawienie informacji w tabeli images
$lastpicid = 55;
$newfilename = $ImageDir . $lastpicid . ".jpg";
// przeliczenie wielkości zdjęcia
$max_width = 1024;
$max_height = 1024;
$new_width = $max_width;
$ratio = $max_width / $width;
$new_height = $height * $ratio;
switch ($type) {
case 1:
$image_old = imagecreatefromjpeg($ImageName);
break;
case 2:
$image_old = imagecreatefromjpeg($ImageName);
break;
case 3:
$image_old = imagecreatefrompng($ImageName);
break;
default:
break;
}
// skonwertuj obraz do formatu JPG
$image_jpg = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($image_jpg, $image_old, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_jpg, $newfilename);
imagedestroy($image_old);
imagedestroy($image_jpg);
}
$newthumbname = $ImageThumb . $lastpicid . ".jpg";
// pobierz wymiary miniaturki
$thumb_width = $width * 0.10;
$thumb_height = $height * 0.10;
// utwórz miniaturkę
$largeimage = imagecreatefromjpeg($newfilename);
$thumb = imagecreatetruecolor($thumb_width, $thumb_height);
imagecopyresampled($thumb, $largeimage, 0, 0, 0, 0, $thumb_width, $thumb_height, $new_width, $new_height);
imagejpeg($thumb, $newthumbname);
imagedestroy($largeimage);
imagedestroy($thumb);
}
}
?>
(wywaliłem z niego db i ustawiłem parę zmiennych ale ogólne działanie jest widoczne)
Przesyłam jeszcze raz kod bo zauważyłem że źle ustawiłem pliki gif, a szybka edycja poprzedniego postu nie działa poprawnie
<form action='' method='POST' enctype='multipart/form-data'>
<input name='image_filename' type='file'>
<input type='submit' value='wyslij'>
</form>
<?php
// udostępnienie zmiennych
$img_nazwa = 'asd.jpg';
$img_fot = "fot/";
$img_min = "fot/min/";
$image_tempname = $_FILES['image_filename']['name'];
// umieszczenie obrazu i sprawdzenie jego formatu
$ImageDir = "fot/";
// folder minaturek
$ImageThumb = $ImageDir . "min/";
$ImageName = $ImageDir . $image_tempname;
// pobranie informacji na temat umieszczonego obrazu
list
($width, $height, $type, $attr) = getimagesize($ImageName);
if ($type > 3) {
echo "Przykro nam, ale przesłany obraz nie jest w formacie GIF, JPG lub " . "PNG.<br>";
echo "Kliknij przycisk 'Wstecz' w przeglądarce i spróbuj ponownie."; } else {
// wstawienie informacji w tabeli images
$lastpicid = 55;
$newfilename = $ImageDir . $lastpicid . ".jpg";
// przeliczenie wielkości zdjęcia
$max_width = 1024;
$max_height = 1024;
$new_width = $max_width;
$ratio = $max_width / $width;
$new_height = $height * $ratio;
switch ($type) {
case 1:
$image_old = imagecreatefromgif($ImageName);
break;
case 2:
$image_old = imagecreatefromjpeg($ImageName);
break;
case 3:
$image_old = imagecreatefrompng($ImageName);
break;
default:
break;
}
// skonwertuj obraz do formatu JPG
$image_jpg = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($image_jpg, $image_old, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_jpg, $newfilename);
imagedestroy($image_old);
imagedestroy($image_jpg);
}
$newthumbname = $ImageThumb . $lastpicid . ".jpg";
// pobierz wymiary miniaturki
$thumb_width = $width * 0.10;
$thumb_height = $height * 0.10;
// utwórz miniaturkę
$largeimage = imagecreatefromjpeg($newfilename);
$thumb = imagecreatetruecolor($thumb_width, $thumb_height);
imagecopyresampled($thumb, $largeimage, 0, 0, 0, 0, $thumb_width, $thumb_height, $new_width, $new_height);
imagejpeg($thumb, $newthumbname);
imagedestroy($largeimage);
imagedestroy($thumb);
}
}
?>