Witam, mam nadzieję, że w dobrym dziale umieszczam swoje pytanie. Mam taki problem: Napisałem po części trochę przerobiłem skrypt dodający zdjęcie (powiedzmy do galerii) i tworzący miniaturkę. Wszystko byłoby dobrze gdyby nie to, że skrypt tworzy miniaturki w okrutnie złej jakości (pikseoloza). Nie mam pojęcia gdzie popełniłem błąd.. przeszukałem manuala i nic konstruktywnego nie znalazłem dlatego zwracam się z prośbą do was o jakieś sugestię ew pomoc.
Poniżej mój skrypt:
function add_photo() {
if(empty($_POST['zdj_opis']) ) { echo '<div class="error"><img src="images/ico/del.png" alt="Błąd!" > Proszę podać opis zdjęcia. </div>'; return;
}
if(empty($_FILES['zdjecie']['name'])) { echo '<div class="error"><img src="images/ico/del.png" alt="Błąd!" > Proszę dodać zdjęcie. </div>'; return;
}
else {
//Rozmiar miniaturki
//Maksymalny format zdjęcia
$nazwa = 'images/galeria/'.$_FILES['zdjecie']['name'];
if ($_FILES['zdjecie']['type']=='image/jpeg') {
$staryObrazek = imagecreatefromjpeg($_FILES['zdjecie']['tmp_name']);
}
if ($_FILES['zdjecie']['type']=='image/png') {
$staryObrazek = imagecreatefrompng($_FILES['zdjecie']['tmp_name']);
}
if ($_FILES['zdjecie']['type']=='image/gif') {
$staryObrazek = imagecreatefromgif($_FILES['zdjecie']['tmp_name']);
}
list
($width, $height) = getimagesize($_FILES['zdjecie']['tmp_name']);$wymiar = $height/$width;
$widthN = $width;
$heightN = $height;
if ($width>$height) {
if ($width>MAX_X) {
$widthN = MAX_X;
$heightN = $widthN*$wymiar;
}
} else {
if ($height>MAX_Y) {
$heightN = MAX_Y;
$widthN = $heightN/$wymiar;
}
}
$nowyObrazek = imagecreatetruecolor($widthN, $heightN);
imagecopyresized($nowyObrazek, $staryObrazek, 0, 0, 0, 0, $widthN, $heightN, $width, $height);
if (!@imagejpeg($nowyObrazek, $nazwa)) {
imagedestroy($nowyObrazek);
imagedestroy($staryObrazek);
echo '<div class="error">Nie można zapisać zdjęcia</div>'; return;
}
imagedestroy($nowyObrazek);
// miniaturka
if ($width>$height) {
$widthN = MIN_X;
$heightN = $widthN*$wymiar;
} else {
$heightN = MIN_Y;
$widthN = $heightN/$wymiar;
}
$miniaturka = imagecreatetruecolor($widthN, $heightN);
imagecopyresized($miniaturka, $staryObrazek, 0, 0, 0, 0, $widthN, $heightN, $width, $height);
if (!@imagejpeg
($miniaturka, 'images/galeria/mini_'.basename($nazwa))) { imagedestroy($miniaturka);
imagedestroy($staryObrazek);
echo '<div class="error">Nie można zapisać miniatruki zdjęcia</div>'; return;
}
imagedestroy($miniaturka);
imagedestroy($staryObrazek);
$lacz = lacz_bd();
$wynik = $lacz->query("INSERT INTO galeria VALUES ('', '$album_id', '$zdj_plik', CURRENT_TIMESTAMP(0), '$zdj_opis')");
if (!$wynik)
throw new Exception('<div class="error"><img src="images/ico/del.png" alt="Błąd!" > Nie dodano zdjęcia. </div>');
else
echo '<div class="ok"><img src="images/ico/ok.png" alt="OK!" > Pomyślnie dodano nowe zdjęcie. </div><br />'; }
}