Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z tworzeniem miniaturek - zapisywany plik jpg jest plikiem webp
Forum PHP.pl > Forum > PHP
ciekawski
Hej, mam problem z tworzeniem miniaturek. Tworzę jest za pomocą GD.

Proces wygląda mniej więcej tak:

1. Upload zdjęcia.
2. Sprawdzenie funkcją getimagesize rozmiaru - w celu weryfikacji poprawności uploadu.
3. Zeskalowanie zdjęcia do największego możliwego rozmiaru.
4. Wyświetlenie zdjęcia.
5. Skopiowanie zdjęcia w docelowe zdjęcie.
6. Stworzenie miniaturki.

W którymś momencie następuje jednak problem - dość nietypowy - tak mi się wydaje. Udaje się bowiem oryginalne zdjęcie zeskalować do maksymalnego rozmiaru, potem wyświetlić, następnie zdjęcie jest przenoszone w docelowy folder, po czym już jest błąd przy tworzeniu miniaturki.
Dziwne natomiast jest to, że polecenie file dla tego pliku zwraca:

Kod
RIFF (little-endian) data


Gdzie dla innych obrazków jpg zwraca np.

Kod
JPEG image data, JFIF standard 1.01, comment: "CREATOR: gd-jpeg v1.0 (using IJ"


Dziwne są też pierwsze znaki w pliku:

Kod
RIFF��^A^@WEBPVP8X


Co może sugerować jakiś format webp - tylko dlaczego się tak mogło stać - czy ktoś się z takim czymś spotkał może?

Jak się okazuje:

1. W systemie operacyjnym pliku nie idzie otworzyć bo zawiera błąd
2. Po zmianie rozszerzenia z jpg na webp otwiera się poprawnie w chrome
3. Po zrobieniu konwertowania online dostaję poprawny jpg



I jeszcze jedna kwestia:

"Uszkodzone" obrazki pochodzą z jednego okresu czasu - kilku dni - do głowy przychodzi mi jakiś moduł na serwerze np. google page speed - ale czy on mógłby zmienić plik na serwerze?
by_ikar
webp jest to format kompresji grafiki jakiś czas temu wypuszczony przez google, który cechuje się lepszą kompresją przy tej samej jakości w porównaniu do jpg. Od niedawna jest też możliwość animacji, kanałów alpha etc. Cóż, grafika raczej otworzy ci się w programach które mają zaimplementowaną obsługę tego formatu, a z racji że jest to całkiem nowy format i ogólnie w kwestii grafiki od dekad nic się nie zmieniło, to praktycznie nikt nic nowego nie implementuje.. W GD jest imagewebp którym możesz wyświetlić lub zapisać obrazek w ów formacie. To jest tak jak z zapisywaniem do jpg, png, czy gif. Sprawdzasz rozszerzenie/mime i używasz do tego odpowiedniej funkcji, bo przecież nie zapiszesz gifa imagejpeg co jest oczywiste. Stąd te błędy.
ciekawski
racja, tylko ja się zastanawiam jakim cudem ten obrazek się za pierwszym razem zeskalował skoro ja tego nie obsługiwałem i dlaczego ktoś wrzucając obrazek jpg wrzucił tego webp - co ciekawe problem ten był przez 2 dni, a potem ustąpił - może to przypadek i ten sam user - choć biorąc pod uwagę mała popularność formatu ciekawe dlaczego ten user nim dysponował.
by_ikar
Przez jakiś czas facebook testował ten format i wyświetlał ludziom losowo ten obrazek. O ile sam facebook był zadowolony, to ludzie nie, bo nie wiedzieli co dalej zrobić z obrazkiem. Tzn zapisywali go, ale nie mieli czym otworzyć i czym przerobić. No i z tego co wiem to google serwuje na wszystkich swoich stronach tam gdzie może i temu komu może obrazki właśnie w webp. Prawdopodobnie sprawdzasz w swoim skrypcie tylko po rozszerzeniu (co się prosi o nadużycia) a powinieneś po mime sprawdzać i jeżeli byłby to typ którego nie obsługujesz, poinformować o tym użytkownika w odpowiedni sposób.
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.