Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt skalowania zdjęć
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
krzychu0808
Witam szukam dobrego skryptu do skalowania zdjęć...
chodzi mi o skalowanie dla sygnaturek w profilu... że użytkownik będzie dawał większe zdjęci niż jest ustawione jakie może być na max to jest ono skalowane do podanej wartości....
sirostr
To tego potrzebny jest ImageMagick

Ja w swoim skrypcie Uploadu skaluję to tak:
  1. <?php
  2. system('convert obrazek_duzy.jpg -resize 300x100 obrazek_maly.jpg');
  3. ?>


Czyli gdy mam na serwerze plik obrazek_duzy.jpg, to po wykonaniu takiego kodu w tym samym katalogu pojawi się plik obrazek_maly.jpg o rozmiarach 300x100 pikseli
krzychu0808
można skróconą instrukcje obsługi bo tutaj widzę że trzeba jeszcze napisać upload pliku chyba....
sirostr
Tutaj masz gotowy skrypt uploadu:
  1. <!DOCTYPE html
  2. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <title>Upload</title>
  8. <style type="text/css">
  9. * {font-family: verdana;}
  10. .info td {padding: 5px; border: 1px #000 solid}
  11. tr td {font-weight: bold; width: 200px;}
  12. </style>
  13. </head>
  14. <h1>Upload</h1>
  15. <body>
  16. <form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF']?>" method="post">
  17. <input name="plik" type="file" />
  18. <input type="submit" value="Wyślij plik" />
  19. </form>
  20. <?php
  21. //CONFIG
  22. $size = '300x150'; //rozmiar jaki mają mieć miniaturki
  23. $path = '/upload/pliki/'; //ścieżka do katalogu z obrazkami
  24.  
  25. $plik['przed'] = $_FILES['plik']['name'];
  26.  
  27. $plik['tmp'] = $_FILES['plik']['tmp_name'];
  28. $nazwa = explode('.',$_FILES['plik']['name']);
  29. $plik['full'] = $nazwa[0].'_'.time().'.'.$nazwa[1];
  30. $plik['mini'] = $nazwa[0].'_m_'.time().'.'.$nazwa[1];
  31. $plik['rozmiar'] = round($_FILES['plik']['size']/1024);
  32. $plik['mime'] = $_FILES['plik']['type'];
  33.  
  34. if(is_uploaded_file($plik['tmp'])) 
  35. {
  36. if($plik['mime'] == 'image/jpeg' OR $plik['mime'] == 'image/png' OR $plik['mime'] == 'image/gif')
  37. {
  38. move_uploaded_file($plik['tmp'], $path.$plik['full']);
  39. system('convert '.$path.$plik['full'].' -resize '.$size.' '.$path.$plik['mini']);
  40.  
  41. $link['full'] = 'http://'.$_SERVER['SERVER_NAME'].$path.$plik['full'];
  42. $link['mini'] = 'http://'.$_SERVER['SERVER_NAME'].$path.$plik['mini'];
  43. $link['html'] = htmlspecialchars('<a href="'.$link['full'].'"><img src="'.$link['mini'].'" alt="" /></a>');
  44. $link['phpbb'] = '[img]'.$link['mini'].'[/img]';
  45.  
  46. ?>
  47. <table class="info">
  48. <tr>
  49. <td>Nazwa pliku</td>
  50. <td><?=$plik['przed']?></td>
  51. </tr>
  52.  
  53. <tr>
  54. <td>Rozmiar pliku</td>
  55. <td><?=$plik['rozmiar']?> KB</td>
  56. </tr>
  57.  
  58. <tr>
  59. <td>Typ MIME pliku</td>
  60. <td><?=$plik['mime']?></td>
  61. </tr>
  62.  
  63. <tr>
  64. <td>Podgląd</td>
  65. <td><a href="<?=$link['full']?>"><img src="<?=$link['mini']?>" alt=""/></a></td>
  66. </tr>
  67.  
  68. <tr>
  69. <td>Link</td>
  70. <td><input type="text" value="<?=$link['full']?>" onclick="this.select()" /></td>
  71. </tr>
  72.  
  73. <tr>
  74. <td>Kod HTML</td>
  75. <td><input type="text" value="<?=$link['html']?>" onclick="this.select()"/></td>
  76. </tr>
  77.  
  78. <tr>
  79. <td>Kod phpBB</td>
  80. <td><input type="text" value="<?=$link['phpbb']?>" onclick="this.select()"/></td>
  81. </tr>
  82.  
  83. </table>
  84. <?php
  85. }
  86. else 
  87. {
  88. echo $plik['mime'].' nie jest dozwolonym typem.';
  89. }
  90. }
  91. ?>
  92. </body>
  93. </html>
krzychu0808
Coś ten skrypcik nie działa.... stworzyłem foldery /upload/pliki i wybieram zdjęcie ładuje i po chwili przestaje i nic się nie dzieje... wchodze na serwer nie ma pliku ani nic... nie ma żadnej tabeli informacje itp.. sam input do wyboru ścieżki przegląd i wyślij nic więcej i nagłówek Upload smile.gif
sirostr
Może nie działać, bo może nie masz ImageMagicka. mi działa
shazarre
phpthumb.sourceforge.net

Proponuję zapoznać się z tą biblioteką.
krzychu0808
Na dydku mam coś takiego "the GD library to create thumbnails from images(gd v. 2)" o to chodzi questionmark.gifquestionmark.gif
Riklaunim
W PHP można "natywnie" tworzyć miniatury w GD, które jest praktycznie wszędzie (google da ci prosty kod tworzenia miniatury). ImageMagick ma rozszerzenie do PHP, ale nie jest stosowany często. Systemowo można generować miniatury przez różne narzędzia - ale odpowiednie funkcje muszą być włączone winksmiley.jpg Nie jest to najlepsze rozwiązanie pod kątem bezpieczeństwa.


Kod
system('convert obrazek_duzy.jpg -resize 300x100 obrazek_maly.jpg');

Nie przeczytałeś strony 587009 manuala smile.gif powinieneś stosować -size 300x100 -thumbnail 300x100 żeby to robiło miniatury opuszczając exify i inne śmieci, a także tak by nie wczytywało całej grafiki, a jedynie część potrzebną do stworzenia miniatury smile.gif jest to znacząco szybsze od resize smile.gif a grafiki też mogą mieć mniejszy rozmiar.
krzychu0808
czyli w jaki sposób mając gd mogę zorbić miniaturkę...
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-2024 Invision Power Services, Inc.