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 2.08.2005, 07:25:34
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 2.08.2005, 08:41:54
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 smile.gif małe przeoczenie...
Go to the top of the page
+Quote Post
PanGuzol
post 2.08.2005, 10:21:14
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ć?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post
tiraeth
post 2.08.2005, 10:54:26
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 2.08.2005, 10:56:43
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?questionmark.gif


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post
tiraeth
post 2.08.2005, 11:39:05
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 smile.gif Sam się na tym nie znam 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 8.08.2005, 01:27:46
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 smile.gif
pozdrawiam smile.gif

Ten post edytował bumfank 8.08.2005, 01:31:46


--------------------
Drukuj24.pl - Drukowanie to koszt
Go to the top of the page
+Quote Post
Bojakki
post 16.08.2005, 21:38:30
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 smile.gif
pozdrawiam 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 17.08.2005, 00:59:31
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ę.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Herf-Life
post 20.08.2005, 12:21:27
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 smile.gif


--------------------
>> Herf-Life XP HomePage <<
Go to the top of the page
+Quote Post
Droopy
post 13.09.2005, 18:11:03
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 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 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 21.09.2005, 20:17:22
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ł smile.gifsmile.gifsmile.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 smile.gif
Go to the top of the page
+Quote Post
mike
post 21.09.2005, 21:13:00
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 30.09.2005, 12:09:19
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 smile.gif udało mi się uruchomić ten skrypt, naprawdę dobra robota.. ale jedna rzecz jest mi w nim potrzebna 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.. smile.gif

pozdrawiam

Ten post edytował Fallout 30.09.2005, 12:11:04


--------------------
Go to the top of the page
+Quote Post
Bakus
post 30.09.2005, 15:18:30
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. ?>


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
Fallout
post 30.09.2005, 17:33:54
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 smile.gif

No i nigdy nie może być za pięknie 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ć?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 30.09.2005, 22:00:48
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. ?>


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
Fallout
post 2.10.2005, 13:16:31
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 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 1.04.2006, 02:43:33
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 12.04.2006, 20:36:34
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.


--------------------
Zbiór najlepszych technologicznych artykułów (programowanie, internet, linux)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2024 - 18:01