Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]GD otwieranie obrazka jedną z trzech metod i utworzenie go.
Forum PHP.pl > Forum > Przedszkole
Trepek
Mam taki problem, że jest sobie plik "a" bez rozszerzenia w katalogu: img. Jest on tak naprawdę obrazkiem w *.png, ale ma usunięte rozszerzenie.
Chciałbym go otworzyć trzema możliwymi metodami czyli: imagecreatefromjpeg(); imagecreatefrompng(); imagecreatefromgif(); Po to chcę otworzyć tymi trzema metodami, gdyż plik "a" może czasami być jako *.gif lub *.jpeg lecz nie ma rozszerzenia. Próbowałem zrobić tak jak w kodzie, który napisałem:

Kod z pliku img.php
  1. <?php
  2. $im = imagecreatefromjpeg('http://localhost/img/a');
  3. $im = imagecreatefrompng('http://localhost/img/a');
  4. $im = imagecreatefromgif('http://localhost/img/a');
  5. header('Content-type: image/jpeg');
  6. header('Content-type: image/png');
  7. header('Content-type: image/gif');
  8. imagejpeg($im);
  9. imagedestroy($im);
  10. ?>


Ale nie działa mi to.
Jedynie gdy usunę kod z pliku img.php w tym przypadku:
  1. $im = imagecreatefromjpeg('http://localhost/img/a');
  2. $im = imagecreatefromgif('http://localhost/img/a');"
  3. header('Content-type: image/jpeg');
  4. header('Content-type: image/gif');


I będzie on w takiej formie:

  1. <?php
  2. $im = imagecreatefrompng('http://localhost/img/a');
  3. header('Content-type: image/png');
  4. imagejpeg($im);
  5. imagedestroy($im);
  6. ?>

To działa bez zarzutu, bo jak napisałem wcześniej plik: "a" jest *.png.
Czy ktoś jest w stanie mi pomóc w napisaniu kodu?
flashdev
Zamiast pisać takie bzdury spradź lepiej w nagłówku pliku jakiego jest typu.

  1. $info = getimagesize($url);
  2. var_dump( $info['mime'] );
Trepek
A czy ktoś mógłby mi pomóc w połączeniem tego kodu, tak by tworzyło obrazek w jpeg metodą gd, po wykryciu jaki to typ obrazka?
Ghost_78
  1. $img= getimagesize('http://localhost/img/a');
  2. switch ($img[type]){
  3. case 'JPG':
  4. $im = imagecreatefromjpeg('http://localhost/img/a');
  5. header('Content-type: image/jpeg');
  6. break;
  7. case 'PNG':
  8. $im = imagecreatefrompng('http://localhost/img/a');
  9. header('Content-type: image/png');
  10. break;
  11. case 'GIF':
  12. $im = imagecreatefromgif('http://localhost/img/a');
  13. header('Content-type: image/gif');
  14. break;
  15. }


pisane z glowy wiec moze cos nie chodzic ale idea powinna byc podobna
Trepek
Po wklejeniu kodu w notatnik i próbie odpalenia go pojawiają się komunikaty:

Notice: Use of undefined constant type - assumed 'type' in F:\wamp\www\proj\img.php on line 3

Notice: Undefined variable: img in F:\wamp\www\proj\img.php on line 3

Dodałem również @ i wtedy fragmencik wygląda tak:
  1. switch (@$img[type]){

Wtedy nie wyświetla się ten komunikat, ale jest białe tło.
Ghost_78
zamien
  1. switch ($img[type]){

na
  1. switch ($img[mime]){


EDIT:

case zmien odpowiednio:
image/gif
image/jpeg
image/png
Trepek
Nadal te same komunikaty:
  1. Notice: Use of undefined constant mime - assumed 'mime' in F:\wamp\www\proj\img.php on line 3
  2.  
  3. Notice: Undefined variable: img in F:\wamp\www\proj\img.php on line 3


Lecz naniosłem trochę korekty. Mój kod wygląda teraz tak:
  1. <?php
  2. $im = getimagesize('http://localhost/img/a');
  3. switch (@$img['mime']){
  4. case 'image/jpeg':
  5. $im = imagecreatefromjpeg('http://localhost/img/a');
  6. header('Content-type: image/jpeg');
  7. break;
  8. case 'image/png':
  9. $im = imagecreatefrompng('http://localhost/img/a');
  10. header('Content-type: image/png');
  11. break;
  12. case 'image/gif':
  13. $im = imagecreatefromgif('http://localhost/img/a');
  14. header('Content-type: image/gif');
  15. break;
  16. }
  17. ?>


To nie pojawiają się już komunikaty, lecz nadal jest puste tło.

Spróbowałem jeszcze zmienić zmienną $img na $im i kod wygląda tak:
  1. <?php
  2. $im = getimagesize('http://localhost/img/a');
  3. switch (@$im['mime']){
  4. case 'image/jpeg':
  5. $im = imagecreatefromjpeg('http://localhost/img/a');
  6. header('Content-type: image/jpeg');
  7. break;
  8. case 'image/png':
  9. $im = imagecreatefrompng('http://localhost/img/a');
  10. header('Content-type: image/png');
  11. break;
  12. case 'image/gif':
  13. $im = imagecreatefromgif('http://localhost/img/a');
  14. header('Content-type: image/gif');
  15. break;
  16. }
  17. ?>

Wtedy pojawia się obrazek z napisem:
http://localhost/proj/img.php a gdy próbuję go zapisać na dysku, to zajmuje 0 kb, jakby go nie było.
Ghost_78
jak przepisujesz to przepisuj dokladnie winksmiley.jpg
masz
  1. $im = getimagesize('http://localhost/img/a');

powinno byc
  1. $img = getimagesize('http://localhost/img/a');

widzisz roznice?

EDIT:
i usun @
Trepek
Teraz mój kod wygląda tak:
  1. <?php
  2. $img = getimagesize('http://localhost/img/a');
  3. switch ($img['mime']){
  4. case 'image/jpeg':
  5. $im = imagecreatefromjpeg('http://localhost/img/a');
  6. header('Content-type: image/jpeg');
  7. break;
  8. case 'image/png':
  9. $im = imagecreatefrompng('http://localhost/img/a');
  10. header('Content-type: image/png');
  11. break;
  12. case 'image/gif':
  13. $im = imagecreatefromgif('http://localhost/img/a');
  14. header('Content-type: image/gif');
  15. break;
  16. }
  17. ?>

Lecz zamiast obrazka wyświetla się komunikat:
http://localhost/proj/img.php
Ghost_78
jak mamy sie dostac na Twoj LOCALHOST questionmark.gif
podaj lepiej kod komunikatu winksmiley.jpg
Trepek
Ghost78 to jest właśnie treść komunikatu, jako taki napis:
"http://localhost/proj/img.php"
Nie ma żadnego błędu typu notice lub warrning, tylko ten napis. co wyżej.
Jak na niego klikam prawym przyciskiem myszy, to mam opcję pokaż informacje o obrazku, po kliknięciu na tą opcję mam takie info:
Ghost_78
a dodajesz na koncu:
  1. imagejpeg($im);
  2. imagedestroy($im);


caly kod:
  1. <?php
  2. $img = getimagesize('http://localhost/img/a');
  3. switch ($img['mime']){
  4. case 'image/jpeg':
  5. $im = imagecreatefromjpeg('http://localhost/img/a');
  6. header('Content-type: image/jpeg');
  7. break;
  8. case 'image/png':
  9. $im = imagecreatefrompng('http://localhost/img/a');
  10. header('Content-type: image/png');
  11. break;
  12. case 'image/gif':
  13. $im = imagecreatefromgif('http://localhost/img/a');
  14. header('Content-type: image/gif');
  15. break;
  16.  
  17. imagejpeg($im);
  18. imagedestroy($im);
  19. }
  20. ?>
Trepek
Mimo wszystko jest to samo co w poprzednim poście.
Ghost_78
ehhh - nie tu klamra zamykajaca
  1. <?php
  2. $img = getimagesize('http://localhost/img/a');
  3. switch ($img['mime']){
  4. case 'image/jpeg':
  5. $im = imagecreatefromjpeg('http://localhost/img/a');
  6. header('Content-type: image/jpeg');
  7. break;
  8. case 'image/png':
  9. $im = imagecreatefrompng('http://localhost/img/a');
  10. header('Content-type: image/png');
  11. break;
  12. case 'image/gif':
  13. $im = imagecreatefromgif('http://localhost/img/a');
  14. header('Content-type: image/gif');
  15. break;
  16. }
  17. imagejpeg($im);
  18. imagedestroy($im);
  19.  
  20. ?>
Trepek
Działa all, dzięki ziomie. Daję pomógł i sorry za to, że musiałeś mi poświęcić czas.
Ghost_78
wazne ze sie udalo winksmiley.jpg
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.