Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Miniatura obrazka
Forum PHP.pl > Forum > Przedszkole
NetJaro
Jak zrobić miniaturę obrazka a potem po kliknięciu na tą miniature pojawił się oryginalny rozmiar obrazka w popupie?

Pozdro :-)

P.S

Mam kod co tworzy miniaturę obrazka:

  1. <?php
  2. header('Content-type: image/jpeg');
  3.  
  4. $myimage = resizeImage(&#092;"./img/$id.jpg\", \"200\", \"200\");
  5. function resizeImage($filename, $newwidth, $newheight){
  6. list($width, $height) = getimagesize($filename);
  7. if($width > $height && $newheight < $height){
  8. $newheight = $height / ($width / $newwidth);
  9. } else if ($width < $height && $newwidth < $width) {
  10. $newwidth = $width / ($height / $newheight);
  11. } else {
  12. $newwidth = $width;
  13. $newheight = $height;
  14. }
  15. $thumb = imagecreatetruecolor($newwidth, $newheight);
  16. $source = imagecreatefromjpeg($filename);
  17. imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  18. return imagejpeg($thumb);
  19. }
  20. ?>


Lecz on wyświetla obrazek sam (tak jak działa <img>).
mario
ja napisałem takie coś.

funkcja_zmien_rozdzielczosc_obrazka.php

  1. <?
  2. function zmien_rozdzielczosc_obrazka ($img_path, $maksymalna_szerokosc, $maksymalna_wysokosc)
  3.  {
  4. $katalog_serwera = $_SERVER['DOCUMENT_ROOT'];
  5.  
  6. If (file_exists(&#092;"$katalog_serwera/$img_path\"))
  7.  {
  8. $img_size = GetImageSize(&#092;"$katalog_serwera/$img_path\");
  9. $img_width = $img_size[0];
  10. $img_height = $img_size[1];
  11.  
  12. $ratio_x = $maksymalna_szerokosc / $img_width;
  13. $ratio_y = $maksymalna_wysokosc / $img_height;
  14.  
  15. if ($img_width < $maksymalna_szerokosc && $img_height < $maksymalna_wysokosc)
  16.  {
  17. $new_width = $img_width;
  18. $new_height = $img_height; 
  19.  }
  20. else
  21.  {
  22. if ($ratio_x > $ratio_y) // Fotka wyzsza niz szersza
  23.  {
  24. $new_width = ceil($img_width * $ratio_y);
  25. $new_height = $maksymalna_wysokosc;
  26.  }
  27. else
  28.  { // Fotka szersza niz wyzsza
  29. $new_width = $maksymalna_szerokosc;
  30. $new_height = ceil($img_height * $ratio_x);
  31.  }
  32.  }
  33.  
  34. $zrd = ImageCreateFromJpeg(&#092;"$katalog_serwera/$img_path\");
  35. $prz = ImageCreateTrueColor($new_width,$new_height);
  36.  
  37. ImageCopyResampled($prz,$zrd,0,0,0,0,$new_width,$new_height,$img_width,$img_height);
  38.  
  39. $zdjecie = pathinfo(&#092;"$katalog_serwera/$img_path\");
  40.  
  41. $zdjecie_katalog = $zdjecie [&#092;"dirname\"];
  42. $zdjecie_nazwa = $zdjecie [&#092;"basename\"];
  43. $zdjecie_rozszerzenie = $zdjecie [&#092;"extension\"];
  44. $zdjecie_sciezka = &#092;"$zdjecie_katalog/$zdjecie_nazwa\";
  45. $zdjecie_sciezka_zapis = &#092;"$zdjecie_katalog/$zdjecie_nazwa\";
  46.  
  47. ImageJpeg ($prz, $zdjecie_sciezka_zapis, 80);
  48. ImageDestroy($zrd);
  49. ImageDestroy($prz);
  50.  
  51. $zdjecie_rozmiar_pliku = filesize($zdjecie_sciezka_zapis);
  52. $zdjecie_rozmiar_pliku = ceil($zdjecie_rozmiar_pliku/1024);
  53.  
  54. list ($zdjecie_szerokosc, $zdjecie_wysokosc, $type, $attr) = getimagesize ($zdjecie_sciezka_zapis);
  55.  
  56. $zdjecie = array ($zdjecie_sciezka_zapis, $zdjecie_katalog, $zdjecie_nazwa, $zdjecie_rozszerzenie, $zdjecie_szerokosc, $zdjecie_wysokosc, $zdjecie_rozmiar_pliku);
  57.  
  58. return $zdjecie;
  59.  }
  60.  }
  61. ?>


aby zrobić miniaturkę include'ujesz funkcję:

  1. <?php
  2. include (&#092;"funkcja_zmien_rozdzielczosc_obrazka.php\");
  3. ?>


kopiujesz obrazek na serwer, i odpalasz funkcję z parametrami:
  1. <?php
  2. $miniaturka = zmien_rozdzielczosc_obrazka ($nazwa_pliku, $max_szerokosc, $max_wysokosc);
  3. ?>


Funkcja zrobi Ci miniaturkę i zapisze pod podaną nazwą $nazwa_pliku. Zwróci również parametry miniaturki: wielkość, szerokość, rozmiar, rozszerzenie, katalog zapisu itp.

A teraz wystarczy skorzystać z kodu do robienia auto-pop'upów opisanego w topicu małe w duże obrazki
NetJaro
Dzięki, teraz mam inny problem...
Mam kod , lecz działa on tylko dla plików JPG. jak zrobić, aby działał na innych typach plików?

  1. <?php
  2. header('Content-type: image/jpeg');
  3.  
  4. $myimage = resizeImage(&#092;"./img/$id.jpg\", \"200\", \"200\");
  5. function resizeImage($filename, $newwidth, $newheight){
  6. list($width, $height) = getimagesize($filename);
  7. if($width > $height && $newheight < $height){
  8. $newheight = $height / ($width / $newwidth);
  9. } else if ($width < $height && $newwidth < $width) {
  10. $newwidth = $width / ($height / $newheight);
  11. } else {
  12. $newwidth = $width;
  13. $newheight = $height;
  14. }
  15. $thumb = imagecreatetruecolor($newwidth, $newheight);
  16. $source = imagecreatefromjpeg($filename);
  17. imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  18. return imagejpeg($thumb);
  19. }
  20. ?>


ID pliku poprzez zmienną $id odczytuję a rozszerzenie poprzez $roz_pliku.

Pozdro :-)
mario
zamiast funkcji imagecreatefromjpeg zmień na:
GIF - imagecreatefromgif
PNG - imagecreatefrompng
WBMP - imagecreatefromwbmp
będziesz musiał dokładnie poczytać w manual'u w przykładach tam wszystko jest dokładnie opisane.
NetJaro
A pytanie:

  1. <?php
  2. $source = imagecreatefrom.$roz_pliku($filename);
  3. ?>


Jak prawidłowo połączyć funkcję z zmienną?
mario
  1. <?php
  2. $plik = pathinfo ($nazwa_pliku);
  3. $rozszerzenie = $plik[&#092;"extension\"];
  4.  
  5. If ($rozszerzenie==&#092;"gif\")
  6.  $polecenie = &#092;"ImageCreateFromGIF\";
  7. If ($rozszerzenie==&#092;"jpg\")
  8.  $polecenie = &#092;"ImageCreateFromJPEG\";
  9. If ($rozszerzenie==&#092;"png\")
  10.  $polecenie = &#092;"ImageCreateFromPNG\";
  11. ?>

a instrukcję w kodzie imagecreatefromjpeg zamień na $polecenie
NetJaro
  1. <?php
  2. if ($roz_pliku == &#092;"gif\"){
  3. header('Content-type: image/gif');
  4. $polecenie = &#092;"ImageCreateFromgif($filename);\";
  5. $polecenie2 = &#092;"imagegif($thumb)\";
  6. } elseif ($roz_pliku == &#092;"GIF\") {
  7. header('Content-type: image/gif');
  8. $polecenie2 = &#092;"imagegif($thumb)\";
  9. $polecenie = &#092;"ImageCreateFromgif($filename);\";
  10. } elseif ($roz_pliku == &#092;"jpg\") {
  11. header('Content-type: image/jpeg');
  12. $polecenie = &#092;"ImageCreateFromjpg($filename);\";
  13. $polecenie2 = &#092;"imagejpeg($thumb)\";
  14. } elseif ($roz_pliku == &#092;"JPG\") {
  15. header('Content-type: image/jpeg');
  16. $polecenie = &#092;"ImageCreateFromjpg($filename);\";
  17. $polecenie2 = &#092;"imagejpeg($thumb)\";
  18. } elseif ($roz_pliku == &#092;"PNG\") {
  19. header('Content-type: image/png');
  20. $polecenie = &#092;"ImageCreateFrompng($filename);\";
  21. $polecenie2 = &#092;"imagepng($thumb)\";
  22. } elseif ($roz_pliku == &#092;"png\") {
  23. header('Content-type: image/png');
  24. $polecenie = &#092;"ImageCreateFrompng($filename);\";
  25. $polecenie2 = &#092;"imagepng\";
  26. }
  27. $myimage = resizeImage(&#092;"./img/$id.$roz_pliku\", \"200\", \"200\");
  28. function resizeImage($filename, $newwidth, $newheight){
  29. list($width, $height) = getimagesize($filename);
  30. if($width > $height && $newheight < $height){
  31. $newheight = $height / ($width / $newwidth);
  32. } else if ($width < $height && $newwidth < $width) {
  33. $newwidth = $width / ($height / $newheight);
  34. } else {
  35. $newwidth = $width;
  36. $newheight = $height;
  37. }
  38. $thumb = imagecreatetruecolor($newwidth, $newheight);
  39. $source = $polecenie;
  40. imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  41.  
  42. return $polecenie2;
  43. }
  44. ?>


Pojawia mi się:
Kod
<br />
<b>Warning</b>:  imagecopyresized(): supplied argument is not a valid Image resource in <b>/home/upload/domains/upload.multihost.us/public_html/show.php</b> on line <b>40</b><br />


Co jest źle z tą funckją?
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.