Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V  < 1 2 3 >  
Reply to this topicStart new topic
> Miniaturka JPEG/GIF/PNG, [funkcja] php 4 i 5, gd2
xberus
post
Post #21





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  imagejpeg($new_img, $save_image, 100);
  3. ?>


Ta linijka nie powinna wygladac tak?

  1. <?php
  2. imagejpeg($new_img, $save_image, $jpeg_quality);
  3. ?>
Go to the top of the page
+Quote Post
tiraeth
post
Post #22





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Faktycznie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) małe przeoczenie...
Go to the top of the page
+Quote Post
PanGuzol
post
Post #23





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

Ostrzeżenie: (0%)
-----


Oco chodzi z
--enable--exif
bo niewiem kaj to dać?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
tiraeth
post
Post #24





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Należy skompilować php z obsługą funkcji exif_
Go to the top of the page
+Quote Post
PanGuzol
post
Post #25





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

Ostrzeżenie: (0%)
-----


Można jaśniej bo dalej niekapuje?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
tiraeth
post
Post #26





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Może poczytaj php.net o rekompilacji/kompilacji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Sam się na tym nie znam (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Cytat(php.net (english))
Windows users must enable both the php_mbstring.dll  and php_exif.dll DLL's in php.ini. The php_mbstring.dll DLL must be loaded before the php_exif.dll DLL so adjust your php.ini accordingly.

Cytat(php.net (tłumaczenie))
Użytkownicy Windows muszą włączyć obsługę bibliotek php_mbstring.dll i php_exif.dll w php.ini. Plik php_mbstring.dll musi zostać załadowany przed php_exif.dll, więc odpowiednio zedytuj swój plik konfiguracyjny.


Kod
[-- OTWÓRZ: php.ini --]

[-- ZNAJDŹ --]
;extension=php_exif.dll

[-- ZAMIEŃ NA --]
extension=php_mbstring.dll

[-- ZNAJDŹ --]
;extension=php_mbstring.dll

[-- ZAMIEŃ NA --]
extension=php_exif.dll

[-- ZAPISZ I ZAMKNIJ PLIK --]
Go to the top of the page
+Quote Post
bumfank
post
Post #27





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 29.02.2004
Skąd: /dev/null

Ostrzeżenie: (0%)
-----


a powiedzcie mi jak zrobic inteligentny resize, czyli np mam ustawiona tylko wartosc zeby szerokosc miala 150px i on wtedy inteligetnie dlugosc ustali wedlug oryginalnego obrazka np obrazek to plakat gdzie dlugosc wieksza jak szerokosc to wtedy np bedzie szerokosc 150 i on sam sobie ustawi ze dlugosc to 300pxow i odwrotnie lezace obrazki zeby mialy szer 150 a dlugosc np 100pxow.

odrazu powiem ze uzylem drugiej wersji skryptu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował bumfank 8.08.2005, 01:31:46
Go to the top of the page
+Quote Post
Bojakki
post
Post #28





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

Ostrzeżenie: (0%)
-----


Cytat(bumfank @ 2005-08-08 00:27:46)
a powiedzcie mi jak zrobic inteligentny resize, czyli np mam ustawiona tylko wartosc zeby szerokosc miala 150px i on wtedy inteligetnie dlugosc ustali wedlug oryginalnego obrazka np obrazek to plakat gdzie dlugosc wieksza jak szerokosc to wtedy np bedzie szerokosc 150 i on sam sobie ustawi ze dlugosc to 300pxow i odwrotnie lezace obrazki zeby mialy szer 150 a dlugosc np 100pxow.

odrazu powiem ze uzylem drugiej wersji skryptu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Sorka, ze odkopuje temat - dinozaur, ale mam dokladnie taka sama prosbe jak piszaca nade mna osoba. Moze ktos pomoc?
Go to the top of the page
+Quote Post
NuLL
post
Post #29





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

Ostrzeżenie: (0%)
-----


Skorzystajcie z wyszukiwarki - sam wkleiłem taką funkcję.
Go to the top of the page
+Quote Post
Herf-Life
post
Post #30





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 6.07.2005
Skąd: Ełk

Ostrzeżenie: (0%)
-----


dobry skrypt ... ale
w $jpeg_quality najlepiej zastosować jakość 94 (nie więcej)
z doświadczenia wam to napisałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Droopy
post
Post #31





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 17.01.2004
Skąd: Suchedniów k/Kielc

Ostrzeżenie: (0%)
-----


tiraeth - świetna funkcja, wielkie dzięki, jednak mam kilka uwag (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
po pierwsze jeśli nazwa pliku jest napisana dużymi literami (wraz z rozszerzeniem) to wtedy funkcja nie rozpoznaje typu pliku (i się wywala), po drugie $jpeg_quality naprawde 90 wystarczy, a używanie 100 prowadzi to powstawania plików sporo większych, a po trzecie dlacego stworzony obrazek ma te białe marginesy (znaczy jak dam do zmniejszenie odrazek bardzo wysoki a wąski to pojawią się białe marginesy po bokach)

trochę zmieniłem skrypt, tak jak napisałem powyżej i mam nadzieję, że nie obrazisz się jak wkleję tu twój skrypt z moimi modyfikacjami (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2. function imgType($name)
  3. {
  4. $roz = strtolower(substr($name,-4));
  5.  if($roz == '.jpg' || $roz == 'jpeg' || $roz == '.jpe')
  6.  {
  7. return "IMAGETYPE_JPEG";
  8.  }
  9.  elseif($roz == '.gif')
  10.  {
  11. return "IMAGETYPE_GIF";
  12.  }
  13.  elseif($roz == '.png')
  14.  {
  15. return "IMAGETYPE_PNG";
  16.  }
  17. }
  18.  
  19. function resizeImage($source, $max_x, $max_y, $save_image, $jpeg_quality = 90)
  20. {
  21.  /*
  22. * source - obrazek jpeg
  23. * max_x - maksymalna szerokosc pomniejszonego obrazka
  24. * max_y - maksymalna dlugosc pomniejszonego obrazka
  25. * save_image - nazwa pliku do ktorego zostanie zapisany nowy obrazek
  26. * jpeg_quality - jakosc powstalego obrazu jpeg - jezeli bedzie inny to argument jest nie wazny (domyslnie 100)
  27. */
  28.  
  29. if (imgType($source) == "IMAGETYPE_JPEG"){
  30. $img_src = imagecreatefromjpeg($source);
  31. } else if (imgType($source) == "IMAGETYPE_GIF"){
  32. $img_src = imagecreatefromgif($source);
  33. } else if (imgType($source) == "IMAGETYPE_PNG"){
  34. $img_src = imagecreatefrompng($source);
  35. } else {
  36. die('Wrong filetype! Accepted images: JPG/JPEG, GIF, PNG');
  37. }
  38.  
  39. $image_x = imagesx($img_src);
  40. $image_y = imagesy($img_src);
  41. if($image_x > $image_y) { // Landscape
  42. $ratio_x = ($image_x > $max_x) ? $max_x/$image_x : 1;
  43. $ratio_y = $ratio_x;
  44. $move = 'y';
  45. } else { // Portrait
  46. $ratio_y = ($image_y > $max_y) ? $max_y/$image_y : 1;
  47. $ratio_x = $ratio_y;
  48. $move = 'x';
  49. }
  50. $new_x = $image_x*$ratio_x;
  51. $new_y = $image_y*$ratio_y;
  52.  
  53. $new_img = imagecreatetruecolor($new_x, $new_y);
  54. imagecopyresampled($new_img, $img_src, 0, 0, 0, 0, $new_x, $new_y, $image_x, $image_y);
  55.  
  56. if(imgType($save_image) == "IMAGETYPE_JPEG") {
  57. imagejpeg($new_img, $save_image, $jpeg_quality);
  58. } else if (imgType($save_image) == "IMAGETYPE_GIF") {
  59. imagegif($new_img, $save_image);
  60. } else if (imgType($save_image) == "IMAGETYPE_PNG") {
  61. imagepng($new_img, $save_image);
  62. }
  63.  
  64. echo '<img src="'.$save_image.'" border="1">';
  65. }
  66. ?>


Ten post edytował Droopy 21.09.2005, 20:23:05
Go to the top of the page
+Quote Post
Homiczek
post
Post #32





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.04.2003

Ostrzeżenie: (0%)
-----


Sorka że odgrzewam temat, ale mam problem związany z generacją miniaturki.
Skrypt taki już jakiś czas temu sobie zrobiłem, ale odkryłem jedną ciekawą rzecz.

Wcześniej też się zdarzało, że na stronie znajdowałem miniaturki wypełnione całe na czarno.
Ale teraz podczas prac nad nową wersją strony, do uploadu postanowiłem wrzucić zdjęcia z komórki (nokia 3220), noi pięknie mi wrzuciło wszystkie miniaturki czarne, a przy okazji troche błędów.

Odpaliłem nawet powyższy skrypt noi to samo - a nawet gorzej, bo on już nic nie wygenerował (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

A sypie takimi błędami :
Kod
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'zdjecie.jpg' is not a valid JPEG file in c:\usr\krasnal\www\newstr\zdj_test.php on line 30

Warning: imagesx(): supplied argument is not a valid Image resource in c:\usr\krasnal\www\newstr\zdj_test.php on line 39

Warning: imagesy(): supplied argument is not a valid Image resource in c:\usr\krasnal\www\newstr\zdj_test.php on line 40


Czyli jakiś niezgodny format jpga - chociaż windoza go normalnie wyświetla i wsio jest ok. A to niby zostało coś sprawdzone podczas uploadu - czy plik jest typu pjeg lub jpeg(to w moim kodzie)

Jak ktoś ma jakieś pomysły czemu jpgi z koma nie są ok dla tej grupy funkcji, lub jak temu zaradzić to z góry dzienki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mike
post
Post #33





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Prawdopodobie format zapisu tych zdjęć, pomimo że zbliżony do .jpg nie do końca nim jest. Może coś nie tak z typem mime. Założe się że jak je otworzysz w jakimś programie graficznym i zapiszesz ponownie jako .jpg to będzie działało.
Go to the top of the page
+Quote Post
Fallout
post
Post #34





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Witam,

po mękach z włączeniem GD2 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) udało mi się uruchomić ten skrypt, naprawdę dobra robota.. ale jedna rzecz jest mi w nim potrzebna (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) tzn:

teraz plik jest nadpisywany, a chciałbym aby zapisywał się w tym samym katalogu co plik źródłowy + katalog mini. czyli

plik : /obrazki/1.jpg
mini : /obrazki/mini/1.jpg

czy byłby ktoś chętny wprowadzić taką modyfikacje?

edit:

no i ewentualnie aby sprawdzal czy plik mini istnieje to wtedy skrypt niepotrzebnie by sie nie wykonywal.. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pozdrawiam

Ten post edytował Fallout 30.09.2005, 12:11:04
Go to the top of the page
+Quote Post
Bakus
post
Post #35


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


  1. <?php
  2. define(MAX_WYMIAR_X, 128);
  3. define(MAX_WYMIAR_Y, 128);
  4. $dir = './obrazki/';
  5. $dir_mini = './obrazki/mini/';
  6.  
  7. if ($dh = opendir($dir))
  8. {
  9. while (($file = readdir($dh)) !== false)
  10. {
  11. if(substr($file, -3) == 'jpg' && !file_exists($dir_mini . $file))
  12. {
  13. resizeImage($dir . $file, MAX_WYMIAR_X, MAX_WYMIAR_Y, $dir_mini . $file);
  14. }
  15. }
  16. closedir($dh);
  17. }
  18. ?>
Go to the top of the page
+Quote Post
Fallout
post
Post #36





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


dzięki Bakus! Nawet nie przypuszczałem, że to takie balane (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

No i nigdy nie może być za pięknie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Cytat
./galerie/spacery/.
./galerie/spacery/mini/.
./galerie/spacery/..
./galerie/spacery/mini/..
./galerie/spacery/mini
./galerie/spacery/mini/mini
./galerie/spacery/1.JPG
./galerie/spacery/mini/1.JPG
./galerie/spacery/10.jpg
./galerie/spacery/mini/10.jpg
./galerie/spacery/12.JPG
./galerie/spacery/mini/12.JPG
./galerie/spacery/13.JPG
./galerie/spacery/mini/13.JPG


oczywiscie chodzi o pierwsze 6 wpisów.. jak się ich pozbyć?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

moje kody:


Ten wyswietla galerie, a po kliknieciu w nia, wyswietla minaturki:
  1. <?php
  2. ini_set('display_errors',1);
  3. include 'db_engine.php';
  4. include 'resize.inc.php';
  5.  
  6. define(MAX_WYMIAR_X, 100);
  7. define(MAX_WYMIAR_Y, 75);
  8.  
  9. $db = new dbengine();
  10. $db->polacz();
  11.  
  12. if (isset($_GET['id'])) // pokazuje wybrana
  13. {
  14. $gid = $_GET['id'];
  15. // pobranie katalogu fotek
  16. $db->DoSql("SELECT katalog FROM galerie WHERE id_galerii = $gid");
  17. $kat = mysql_result($db->wynik,0,0);
  18. $dir = './galerie/'.$kat.'/';
  19. $dir_mini = './galerie/'.$kat.'/mini/';
  20. if ($dh = opendir($dir))
  21. {
  22. while (($file = readdir($dh)) !== false)
  23. {
  24. echo $dir. $file. '<br>';
  25. echo $dir_mini. $file. '<br>';
  26. /*
  27. if(((substr($file, -3,3) == 'jpg') or (substr($file, -3,3) == 'JPG'))
  28.  && !file_exists($dir_mini . $file))
  29. {
  30. resizeImage($dir . $file, MAX_WYMIAR_X, MAX_WYMIAR_Y, $dir_mini . $file);
  31. }
  32. elseif(file_exists($dir_mini . $file))
  33. {
  34. echo '<img src="'.$dir_mini . $file.'" border="1">';
  35. }*/
  36. }
  37. closedir($dh);
  38. } 
  39.  
  40. $db->rozlacz();
  41. }
  42. else // pokazuje wszystkie
  43. {
  44.  
  45. $db->DoSQL("SELECT * FROM galerie");
  46. $db->NRows;
  47. $w = $db->wynik;
  48. $n = $db->rows;
  49.  
  50. while ($r=mysql_fetch_array($w))
  51. {
  52. $id  = $r['id_galerii'];
  53. $opis = $r['nazwa_galerii'];
  54.  
  55. echo "<a href="index.php?s=galerie&amp;id=$id">".$opis.'</a><br>';
  56. }
  57.  
  58. $db->rozlacz();
  59.  
  60. } // koniec wszystkich
  61. ?>


Ten kod to natomiast ciut zmodyfikowany skrypt z tematu (wiec nie wklejam calego):

  1. <?php
  2. function imgType($name)
  3. {
  4.  if((substr($name, -4, 4) == '.JPG')OR(substr($name, -4, 4) == '.jpg'))
  5.  {
  6. return "IMAGETYPE_JPEG";
  7.  }
  8.  elseif(substr($name, -4, 4) == '.gif')
  9.  {
  10. return "IMAGETYPE_GIF";
  11.  }
  12.  elseif(substr($name, -4, 4) == '.png')
  13.  {
  14. return "IMAGETYPE_PNG";
  15.  }
  16. }
  17. ?>


jak widac zmienilem tylko warunek..


Wiec powtorze pytanie? jak pozbyc sie tych zbędnych wpisów?

Dziękuje z góry i pozdrawiam
Marcin
Go to the top of the page
+Quote Post
Bakus
post
Post #37


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


  1. <?php
  2. if(((substr($file, -3,3) == 'jpg') or (substr($file, -3,3) == 'JPG'))
  3. ?>

to właśnie powyższa linijka odpowiada za wybieranie tylko plikow .jpg
mozesz zrobic tak:
  1. <?php
  2. $typy = array("jpg", "png", "gif");
  3. if(in_array(substr(strtolower($file), -3,3), $typy))
  4. {
  5. if(file_exists($dir_mini . $file))
  6. {
  7. print '<img src="'.$dir_mini . $file.'" border="1">';
  8. }else{
  9. resizeImage($dir . $file, MAX_WYMIAR_X, MAX_WYMIAR_Y, $dir_mini . $file);
  10. }
  11. }
  12. ?>
Go to the top of the page
+Quote Post
Fallout
post
Post #38





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Dzięki ponownie Bakus !


Skrypt uruchomiony, działą znakomicie (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)


Tylko tak zastanawiam się, czy jest sposób na "następny" i "poprzedni" ? W końcu to pliki, mogące mieć różne nazwy, może być ich rożna ilość.. jest możliwe wogóle to do wykonania?


pozdrawiam
Go to the top of the page
+Quote Post
Markym
post
Post #39





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 1.04.2006

Ostrzeżenie: (0%)
-----


Witam podepnę się pod topic. Interesuje mnie autogenerowanie miniatur zdjęć, skrypt poniżej niestety nie działa.

  1.  
  2. <?php
  3.  
  4.  
  5. define('DIR' , 'auto'); //gdzie są zdjęcia
  6. define('SUBDIR', 'auto/mini'); //podkatalog na miniatury
  7. define('PREFIX', 'm');
  8. define('WIDTH', 160);
  9. define('HEIGHT', 120);
  10.  
  11. $i = 0;
  12. mkdir(DIR . SUBDIR);
  13. chmod(DIR . SUBDIR, 0755);
  14.  
  15. if ($handle = opendir(DIR)) {
  16. while (false !== ($file = readdir($handle))) {
  17. if ($file != '.' && $file != '..' &&
  18. $file != basename(__FILE__) && $file != SUBDIR) {
  19. $i++;
  20. $src_img = imagecreatefromjpeg(DIR . $file);
  21. $dst_img = imagecreatetruecolor(WIDTH, HEIGHT);
  22. imagecopyresized($dst_img, $src_img, 0, 0, 0, 0,
  23. WIDTH, HEIGHT, imagesx($src_img),
  24. imagesy($src_img));
  25. $mini = PREFIX . $file;
  26. echo $i . '. Miniatura z pliku ' . $file . '...';
  27. echo imagejpeg($dst_img, DIR.SUBDIR.'/'.$mini,
  28. 100) && src_img ? 'OK' : 'FALSE';
  29. chmod(DIR.SUBDIR.'/'. $mini, 0755);
  30. echo "\n";
  31. }
  32. }
  33. }
  34.  
  35. ?>


Byłbym również wdzięczny za wskazanie jakiegoś funkcjonalnego skryptu do generowania miniatur w trakcie wysyłania na serwer. Ten powyżej miałby mnie trochę wyręczyć bo do zmodyfikowania jest sporo fotek.
Go to the top of the page
+Quote Post
intol
post
Post #40





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 29.07.2003

Ostrzeżenie: (10%)
X----


Jak wynika z moich testów w funkcji jest błąd, dotyczący obliczania ratio.

O ile dla obrazka o rozmiarach 100x100 wywołanie funkcji:

resizeImage($img,20, 100, $imgMini);

zadziała prawidłowo, to:

resizeImage($img,100, 20, $imgMini);

już tak nie zadziała.

P.S. (do autora)
Czy mógłbyś w główym poście umieścić ostateczną wersję skryptu? W wątku co rusz przedstawiane są jakieś udoskonalenia, i zaorientowanie się we wszystkich jest bardzo czasochłonne.
Go to the top of the page
+Quote Post

3 Stron V  < 1 2 3 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.06.2026 - 12:00