Witam jak w temacie, czy ktoś mógłby mi pomóc z kodem w php? nie dodaje znaku wodnego i nie zapisuje się na ftp, bez kodu ze znakiem wodnym wszystko działa prawidłowo
foreach ($_FILES["plik"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $addnews_query = $mysql->query("INSERT INTO `photos` (`id`, `Type`) VALUES ('$post_id', 'test')"); $img_insert_id = $mysql->insert_id; $file_tmp = $_FILES["plik"]["tmp_name"][$key]; $file_name = $_FILES["plik"]["name"][$key]; //$file_up_name = time(); $true_hash = $img_insert_id; //$file_hash = str_replace('=', '', base64_encode($true_hash)); if (http://www.php.net/is_uploaded_file($file_tmp)) { $image = imagecreatefromjpeg($true_hash); $watermark = imagecreatefromjpeg('/template/new/img/inf.png'); $width = imagesx($image); $height = imagesy($image); $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark); imagecopymerge($image, $watermark, (($width - $watermark_width))-10, (($height - $watermark_height))-10, 0, 0, $watermark_width, $watermark_height, 100); http://www.php.net/header('Content-Type: image/jpeg'); imagejpeg($image); imagedestroy($image); imagedestroy($watermark); http://www.php.net/move_uploaded_file($file_tmp, '../uploads/photos/' .$image. '.jpg'); $query = $mysql->query("UPDATE `photos` SET `Address` = '$file_hash' WHERE `id` = '$post_id'"); } } }
Chcesz wyświetlać te obrazki? Nie wczytywałem się aż tak w ten kod, ale spróbuj zamienić $true_hash = $img_insert_id; na $true_hash = file_get_contents($file_tmp);
Chciałem żeby na ftp mi się zapisywały zdjęcie ze znakiem wodnym z nazwa -> id zdjęcia mysql, bez znaku wodnego działa mi to znakomicie, ale ze znakiem wodnym już nie zapisuje na ftp
A masz taką ścieżkę /template/new/img/inf.png? Włącz wyświetlanie błędów.
Spojrzałem drugim okiem i jest pełno baboli.
Przejrzyj sobie tutoriale albo dokumentację PHP GD. $image to zasób obrazka, a nie jakiś tekst. A żeby zapisać obrazek, musisz podać drugi parametr ze ścieżką pliku. Twój kod próbuje tylko wyświetlić ten obrazek. Content-Type jest niepotrzebny do zapisywania.
możesz mi jakoś pomoc z tym kodem? byłbym wdzięczny
Musisz przede wszystkim odczytać obrazek i go zapisać, np.:
$image = imagecreatefromjpeg($file_tmp); // ... imagejpeg($image, '../uploads/photos/' . $img_insert_id . '.jpg'); http://www.php.net/move_uploaded_file($file_tmp, '../uploads/photos/' . $img_insert_id . '-original.jpg');
if($query) { http://www.php.net/echo '<center><div class="login_ok">Dodane!</div></center>'; foreach ($_FILES["plik"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $addnews_query = $mysql->query("INSERT INTO `photos` (`cid`, `Type`) VALUES ('$post_id', 'annoncement')"); $img_insert_id = $mysql->insert_id; $file_tmp = $_FILES["plik"]["tmp_name"][$key]; $file_name = $_FILES["plik"]["name"][$key]; //$file_up_name = time(); $obraz = $img_insert_id; //$file_hash = str_replace('=', '', base64_encode($true_hash)); if (http://www.php.net/is_uploaded_file($file_tmp)) { $image = imagecreatefromjpeg($file_tmp); $watermark = imagecreatefromjpeg('text.gif'); $width = imagesx($image); $height = imagesy($image); $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark); imagecopymerge($image, $watermark, (($width - $watermark_width))-10, (($height - $watermark_height))-10, 0, 0, $watermark_width, $watermark_height, 100); imagejpeg($image, '../uploads/photos/' . $img_insert_id . '.jpg'); http://www.php.net/move_uploaded_file($file_tmp, '../uploads/photos/' .$img_insert_id. '-test.jpg'); $query = $mysql->query("UPDATE `photos` SET `Address` = '$file_hash' WHERE `id` = '$post_id'"); } } } http://www.php.net/echo'<div class="linkok"><a href="/'.$admin.'/annoncement.php">Wróc na stronę</a></div>'; break; }
Pobawiłem się chwilę Twoim kodem i do poprawy jest to:
1. Używasz znaku wodnego w formacie GIF, więc powinno być imagecreatefromgif() zamiast imagecreatefromjpeg().
2. Czy ten break na końcu nie jest błędem? Nie ma tu na zewnątrz żadnej pętli, chyba że pokazałeś tylko wycinek.
Udało mi się doprowadzić ten kod do stanu używalności, tzn. zapisał mi każdy obrazek w wersji zwykłej i ze znakiem wodnym text.gif w prawym dolnym rogu.
ten break jest zrobiony tak że jak wykona się skrypt to nie pojawia się formularz tylko link
ja próbowałem na lewo i prawo i nie udaje mi się
Po za tym jak wspomniałem przy jednym zdjęciu zapisuje na ftp tyle że bez znaku wodnego
a przy większej ilości zdjęć to zapisuje tylko jedne zdjęcie.
Włącz sobie wyświetlanie błędów przede wszystkim i zobacz jakie są błędy.
Czyli jak wysyłasz np. dwa obrazki, to które dokładniej są prawidłowo generowane? Dostajesz tylko pierwszy obrazek bez znaku wodnego?
teraz wysyła wszystkie ale w żadnym nie generuje znaku wodnego.
A zmieniłeś na imagecreatefromgif() i jesteś pewien, że ten obrazek ze znakiem wodnym ma prawidłową ścieżkę? Sam kod nakładania znaku wodnego jest w porządku, sprawdziłem.
bool(false) bool(false)
taki błąd mi pokazało
To nie jest błąd, tylko wartość czegoś, nawet nie wiem czego.
Teraz działa, dzięki bardzo wszystko jestok, okazał się błąd w ścieżce do pliku gif
No widzisz, czasem trzeba sprawdzić wszystko
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)