W poniższym skrypcie w zwroticy switch tworzę obraz do rozmiarów o wysokości nie wiekszej niz np 600px oraz miniaturkę o wysokości nie wiekszej niz 120 px. Problem wystepuje, ze gdy przy pliku wiekszym od 600px miniaturka jest dziwnie tworzona, tzn w miniaturce jest maly obrazek a wokół ciemne pole - taj jakby były wskazywane zle rozmiary do tworzenia miniaturki.
Jak poprawic ten kod - wiem ze nie jest optymalny.
Założenia są takie by skrypt pobieral obrzek | zapisywał w wskazanym katalogu obrazek o rozmiarze nie wiekszym niz w zmiennej | tworzyl jego miniaturke o danych wymiarach.
<?php
case'Dodaj':
$id=$_POST['kategoria_id'];
$zap = "SELECT * FROM galkat WHERE id_kategoria='$id'";
$poziom = $rzad['poziom'];
//spr czy user jest zalogowany - posiada sesje i nadajemy potrzebne wartosci z sesji albo wstawiamy ZERA
if (isset($_SESSION['nr'])) {
$nr=$_SESSION['nr'];
$poziomu=$_SESSION['ranga'];
}
else
{
$nr=0;
$poziomu=1;
}
if($poziom <= $poziomu)
{ $czy=1; }
else
{ $czy=0 ; }
$data = date('d-m-y G:i'); $tytul = $_POST['tytul'];
$tresc = $_POST['tresc'];
$ip = $_SERVER['REMOTE_ADDR'];
$id2 = $_POST['podkat_id'];
$obrazek = $_FILES['obrazek']['name'];
// umieszczenie obrazu i sprawdzenie jego formatu
$ImageDir ="image/max/";
$ImageThumb = "image/min/";
$ImageName = $ImageDir . $obrazek;
// gdy wskazany jest obrazek
{
// pobranie informacji na temat umieszczonego obrazu
list
($width, $height, $type, $attr) = getimagesize($ImageName);
if ( ($type == 1) or ($type==2) or ($type==3) )
{
////////////////
$insert = "INSERT INTO foto VALUES
('', '$id', '$id2','$nr', '$czy', '0', '$data', '$tytul', '$tresc', 'image/auto.jpg', 'image/auto.jpg','160', '120', '$ip' )";
$newfilename = $ImageDir . $lastpicid . ".jpg";
//////////////////////////////////
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($width, $height);
imagecopyresampled($image_jpg, $image_old, 0, 0, 0, 0,
$width, $height, $width, $height);
imagejpeg($image_jpg, $newfilename);
imagedestroy($image_old);
imagedestroy($image_jpg);
imagedestroy($image_old);
}
//^^^^^^^^^^^^^^^^^
if ($height > 600)
{ $ilemax= $height / 600; $sz = ceil( $width / $ilemax); $wy = 600; $thumb_w = $sz; $thumb_h = $wy; } else { $thumb_w = $width; $thumb_h = $height; }
$thumb_w = $sz;
$thumb_h = $wy;
// utwórz miniaturkę
$large = imagecreatefromjpeg($newfilename);
$thumba = imagecreatetruecolor($thumb_w, $thumb_h);
imagecopyresampled($thumba, $large, 0, 0, 0, 0, $thumb_w, $thumb_h, $width, $height);
$newfile = $newfilename;
imagejpeg($thumba, $newfile);
// rename( $newthumbname, $xxx);
imagedestroy($large);
imagedestroy($thumba);
//^^^^^^^^^^^^^
$newthumbname = $ImageThumb . $lastpicid . ".jpg";
// pobierz wymiary miniaturki
if ($height > 120)
{ $ile= $height / 120;
$szerokosc = ceil( $width / $ile); $wysokosc = 120; $thumb_width = $szerokosc;
$thumb_height = $wysokosc; }
else { $thumb_width = $width; $thumb_height = $height; }
$thumb_width = $szerokosc;
$thumb_height = $wysokosc;
// utwórz miniaturkę
$largeimage = imagecreatefromjpeg($newfilename);
$thumb = imagecreatetruecolor($thumb_width, $thumb_height);
imagecopyresampled($thumb, $largeimage, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height);
imagejpeg($thumb, $newthumbname);
// rename( $newthumbname, $xxx);
imagedestroy($largeimage);
imagedestroy($thumb);
/////////
// obraz jest w poprawnym formacie, można kontynuować
// wstawienie informacji w tabeli images
$obrazek= $ImageThumb. $lastpicid . ".jpg";
$obrazekxl= $ImageDir. $lastpicid . ".jpg";
$insert = "UPDATE foto SET width='$szerokosc' , height='$wysokosc', obrazek='$obrazek' , obrazekxl='$obrazekxl' WHERE id='$lastpicid'";
if (isset ($insertresults) ) { echo "<script language=\"JavaScript\"> window.location=\"index.php?strona=galeria&akcja=dodano_nowa&id=$lastpicid\";
</script>"; }
}
else
{
echo "Przykro nam, ale przesłany obraz nie jest w formacie gif, jpg lub " . "png.<br>";
$lokalizacja= $ImageName;
$usuwanie = unlink($lokalizacja);
echo "Kliknij przycisk 'Wstecz' w przeglądarce i spróbuj ponownie. $lokalizacja"; }
}
// gdy nie wskazano obrazka <script language=\"JavaScript\"> window.location=\"index.php?strona=ogloszenie&akcja=dodano_nowa&id=$lastid\"</script>
else{ echo 'BŁAD. Nie dodano fotografii'; }
////////////////////
break;
?>