Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]skalowanie obrazków php
Forum PHP.pl > Forum > Przedszkole
gitbejbe
Witam.
Mimo długich poszukiwać nie udało mi się odszukać rozwiązania w internecie, dlatego chcę poprosić was o pomoc.

Tak jak w temacie:

chcę stworzyć skrypt do skalowania obrazów. Najpierw chciałem sam nauczyć się funkcji więc pisałem sam.
Jak już z czasem zaczeło mnie to drażnić, poszukałem gotowców i dalej mam ten sam problem.

Mianowicie każdy skrypt - z wielu źródeł, jaki bym nie wkleił, efekt jest taki:



wrzucam jeden z najkrótszych i najprostszych skryptów (żywcem pobrany z neta):

  1.  
  2. // Plik
  3. $filename = 'test.jpg';
  4. $percent = 0.5;
  5.  
  6. // Content type
  7. header('Content-type: image/jpeg');
  8.  
  9. // pobiera nowe współrzędne
  10. list($width, $height) = getimagesize($filename);
  11. $new_width = $width * $percent;
  12. $new_height = $height * $percent;
  13.  
  14. // Korekcja
  15. $image_p = imagecreatetruecolor($new_width, $new_height);
  16. $image = imagecreatefromjpeg($filename);
  17. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  18.  
  19. // Wyjście
  20. imagejpeg($image_p, null, 100);
  21.  



Pod komentarzami skryptów ludzie piszą, że wszystko działa jak nalezy... a ja jestem pewien, ze chodzi tutaj o jakąś pierdułke o której zwyczajnie nie wiem...

EDIT:
dodam że sprawdziłem już GD - działa
kodowanie - UTF-8 bez bom
nospor
Przeglądarka -> źródło strony -> pokaż co zawiera
gitbejbe
jeśli chodzi o źródło strony po wykonaniu skryptu - czyli tego braku zdjęcia (tak jak na obrazku w temacie), to nie mogę przejść do podglądu. Ta opcja jest zablokowana... : |

wrzucam całą zawartość dokumentu:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2.  
  3. <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
  4. <link href="css/srodek.css" rel="stylesheet" type="text/css" />
  5.  
  6. <!-- filtruj js -->
  7.  
  8.  
  9. </head>
  10.  
  11.  
  12. <div id="srodek_big">
  13.  
  14.  
  15. <div style="background: url(css/images/111.png) no-repeat; width:400px; height:200px;margin-left:-11px; position:relative; top:30px;"></div>
  16.  
  17. <div id="item_bg">
  18.  
  19. <!-- <div style="width:100%; height:600px; border:1px solid red;"></div> -->
  20. <div id="item">
  21.  
  22. <div id="item_top" style="width:100%;">

  1. <?php
  2.  
  3. // Plik
  4. $filename = 'css/images/5.jpg';
  5. $percent = 0.5;
  6.  
  7. // Content type
  8. header('Content-type: image/jpeg');
  9.  
  10. // pobiera nowe współrzędne
  11. list($width, $height) = getimagesize($filename);
  12. $new_width = $width * $percent;
  13. $new_height = $height * $percent;
  14.  
  15. // Korekcja
  16. $image_p = imagecreatetruecolor($new_width, $new_height);
  17. $image = imagecreatefromjpeg($filename);
  18. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  19.  
  20. // Wyjście
  21. imagejpeg($image_p, null, 100);
  22.  
  23. ?>
  24.  



  1.  
  2.  
  3. </div>
  4.  
  5. <div id="item_bottom"></div>
  6.  
  7. </div>
  8.  
  9. </div>
  10.  
  11. </div>
  12.  
  13. </body>
  14. </html>


ten plik jest załączany przez include w głównym dokumencie index.
jeśli wywale "header('Content-type: image/jpeg');" wyskakują krzaki.

Sorry za ten akt desperacji z całym kodem pliku, ale naprawdę nie mam już bladego pojęcia gdzie może być błąd.
nospor
Nic dziwnego ze ci nie działa, jak ty ten skrypt wkładasz między kod html....
Ten kod php co dostałeś ma być wykonany oddzielnie, nie może byc w tym samym żądaniu co reszta kodu.
Możesz go dodać do swojego html np. tak:

Kod
twoj kod html

<img src="http://localhost/twoj_skrypt_co_generuje_obrazek.php" />

reszta twojego html


ps:
Cytat
, to nie mogę przejść do podglądu. Ta opcja jest zablokowana... : |
A od kiedy przeglądarka blokuje "Pokaż źródło strony"... coś kręcisz albo nie zrozumiałeś o czym mówiłem.
gitbejbe
ok, już sprawdzam Twoją poradę : )

co do blokady to:



jak zadziała to dam znać i poprawię cały kod tla potomnych : ) w sieci widziałem sporo pytań o tą samą rzecz.
nospor
To ta blokada pewnie dlatego, że wysłałeś nagłówki obrazka... chociaż i to nie powinno mieć znaczenia... Jakaś durna ta Twoja przeglądarka wink.gif

Cytat
w sieci widziałem sporo pytań o tą samą rzecz.
Widać jest bardzo wielu użytkowników internetu, którzy nie rozumieją tej prostej rzeczy smile.gif
gitbejbe
hehe, większość osoba ma taką samą przeglądarkę ;D

ok, zrobiłem skrypt w oddzielnym pliku 'skalowanie.php'.
dodatkowo ustawiłem w skrypcie skalowania zdjecia aby zapisywał je pod nazwa test.jpg. I tak się też dzieje - plik się ładnie skaluje i zapisuje.
wyświetlam go później za pomocą htmla pod nazwą zeskalowanego pliku czyli test.jpg

A mam teraz inne pytanie.

Ogólnie skrypt ma skalować zdjęcia przed zapisaniem ich do bazy. Czy muszę napisać skrypt w ten sposób, żeby najpierw skalował mi zdjęcie i zapisywał je w poprawnej formie na serwerze, a następnie ten utworzony plik zapisywał w bazie ?

da rade w funkcji :
  1. imagejpeg($image_p, 'test1.jpg', 100);

zamiast test1.jpg wstawić zmienną odpowiedzialną za dodanie zdjecia do bazy ?

dziękuję za poświęcony czas : )
nospor
W bazie nie zapisuje się zdjęć. W bazie trzyma się jedynie info o zdjęciu, zaś samo zdjęcie ma leżeć na dysku
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.