Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]skalowanie zdjęć z katalogu
Cromwell
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 1.09.2009

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


Muszę przeskalować zdjęcia w jednym katalogu na serwerze.
Zdjęcia zajmują ponad 3 giga, jest ich kilkadziesiąt tysięcy.
Zależy mi po prostu na stworzeniu małych miniaturek.

Nazwy zdjęć to hashe md5, czyli mają 32 znaki, żadnych rozszerzeń. W tym samym katalogu są też inne pliki, z innymi nazwami.
Początkowo próbowałem 'starą' metodą, to jest funkcja do zmniejszania zdjęć, a następnie mielenie katalogu i tworzenie miniaturki po natrafieniu na odpowiedni plik.
Fajnie działało, ale wywalało mi błąd 500 serwera, więc to raczej nie tędy droga.

Postanowiłem skorzystać z Imagick - przerobiłem skrypt na taką postać:
  1. <?php
  2. if ($_GET['start'] == 'tak')
  3. {
  4. $folder = dir('photos');
  5. while($plik = $folder->read())
  6. {
  7. if (($plik != '.') AND ($plik != '..'))
  8. {
  9. if (preg_match_all('/^.{32}$/', $plik))
  10. {
  11. if (!file_exist($plik.'.jpg'))
  12. {
  13. $im = new Imagick();
  14. $im->readImage($plik);
  15. $im->thumbnailImage(300, null);
  16. $im->writeImage($plik.'.jpg');
  17. $im->clear();
  18. $im->destroy();
  19. }
  20. }
  21. }
  22. }
  23. echo 'skonczone';
  24. $folder->close();
  25. }
  26. else
  27. {
  28. echo '<form action="cap.php" method="get">
  29. <input type=hidden name=start value="tak">
  30. <input type="submit" value="start" />
  31. </form>';
  32. }
  33. ?>

Problem w tym, że teraz nie przerabia żadnych zdjęć.. jeśli wywalę mielenie katalogu i sprawdzanie czy pliki mają w nazwie 32 znaki, to kilka plików zmieni i stoi.
Wie ktoś, gdzie tu jest błąd?
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A nie prościej użyć po prostu mogrify? Jedna komenda, dużo szybsze, mniej pamięci zeżre.

http://www.imagemagick.org/script/mogrify.php


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Cromwell
post
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 1.09.2009

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


ok..
tylko nie mam dostępu do linii komend, jedyne czym mogę operować, to php..

mógłbym prosić o przykład, jak to połączyć z tym moim tworkiem?
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale jak nie masz zablokowanego shell_exec, to działaj śmiało.

Wiele hostingów ma już ImageMagick, popróbuj.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Cromwell
post
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 1.09.2009

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


Guzik, to nie działa.

Co mnie zastanawia odnośnie mojego wcześniejszego kodu - dlaczego dla pojedynczego pliku (zmiennej $plik przypisuje nazwę pliku) bez problemu tworzy miniaturę, natomiast jeśli daję przerabianie katalogu, to już nie działa.
Wszystko przy imagick pozostawiam tak samo, jedynie komentuję pozostały kod..
Go to the top of the page
+Quote Post

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 Aktualny czas: 19.08.2025 - 10:01