Witam!
Chciałbym z poniżeszego formularza:
<form action="" method="post" enctype="multipart/form-data"> <input type="text" name="login" /> <input type="file" name="plik" /> <input type="submit" value="Zapisz" />
Uploadowany obrazek dostaje nową nazwę i lokalizację ze skryptu:
$zapytanie = 'SELECT MAX(id_opisu) FROM opis_towaru';
$wyniki = $baza->select($zapytanie);
$id_p_1 = $wyniki[0]['MAX(id_opisu)']+1;
if (isset($_FILES['Plik'])) {
$okladka = explode('.',$_FILES['Plik']['name']);
if (!move_uploaded_file($_FILES['Plik']['tmp_name'], '../okladki/'.$id_p_1.'.'.$okladka[1
])) switch($_FILES['Plik']['error'])
{
case 1:
echo('Przesyłany plik jest większy niż zezwala konfiguracja serwera.'); break;
case 2:
echo('Przesyłany plik jest większy niż zezwala formularz.'); break;
case 3:
echo('Przesłano tylko część pliku.'); break;
case 4:
echo('Plik nie został przesłany'); break;
}
}
później chciałbym uzyskać dodatkowy efekt. Otóż chciałbym, żeby ten obrazek został odpowiednio zeskalowany i ten nowoutworzony plik podmienił ten stary. Skalowanie uzyskuję z tego skryptu:
$nazwa_p = 'przyklad.jpg';
$szerokosc = 120;
$wysokosc = 190;
header('Content-type: image/jpeg');
list
($szerokosc_oryg, $wysokosc_oryg) = getimagesize($nazwa_p);
$skala_oryg = $szerokosc_oryg/$wysokosc_oryg;
if ($szerokosc/$wysokosc > $skala_oryg) {
$szerokosc = $wysokosc*$skala_oryg;
} else {
$wysokosc = $szerokosc/$skala_oryg;
}
$image_p = imagecreatetruecolor($szerokosc, $wysokosc);
$image = imagecreatefromjpeg($nazwa_p);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $szerokosc, $wysokosc, $szerokosc_oryg, $wysokosc_oryg);
$obrazek = imagejpeg($image_p, null, 100);
Czyli ogólnie:
- wybieramy obrazek z formularza
- plik zostaje wrzucony do odpowiedniego katalogu
- obrazek jest skalowany
- stary obrazek jest podmieniany przez nowy- zeskalowany
jak mogę to osiągnąć?