Mam aplikację do udostępniania zdjęć PHP, w której obrazy przesłane przez użytkownika są zmieniane na różne formaty kciuków za pomocą ImageMagick.Jak usunąć plik exif z JPG bez utraty jakości obrazu?
Jak pozornie „inteligentny” sposób na zaoszczędzenie na rozmiar pliku, mam stripping informacje EXIF z tymi kciukami następująco:
$imagick = new Imagick($image);
$imagick->stripImage();
$imagick->writeImage($image);
To działa. Usuwa informacje EXIF, gdzie kciuki 30KB zapisują 12KB i stają się 18KB. Znacząca oszczędność przy pokazywaniu wielu takich kciuków na jednej stronie.
Problem polega jednak na tym, że działa zbyt dobrze. Uzyskane obrazy wydają się tracić wiele informacji o kolorze i wyglądają "płasko" w porównaniu z ich nierozkładanymi wersjami.
podstawie moich dotychczasowych badań, moja teoria jest taka, że jeden lub oba z następujących warunków:
- Imagick wyrzuca podstawowe informacje o profilu kolorów jako część procesu odpędzania
- Imagick kompresowane obraz po zapisaniu, utracie jakości
Bez względu na przyczynę problemu, szukam sposobu na usunięcie informacji EXIF w taki sposób, aby nie wpłynęło to na jakość obrazu lub kolor.
Czy to możliwe?
Aktualizacja:
podstawie odpowiedzi Gerald Schneider, próbowałem egzekwowania ustawienie jakości do 100% przed "stripping" Obraz:
$imagick = new Imagick($image);
$imagick->setCompression(imagick::COMPRESSION_JPEG);
$imagick->setCompressionQuality(100);
$imagick->stripImage();
$imagick->writeImage($image);
Niestety, problem pozostaje. Poniżej znajduje się przykładowy wynik, w którym pomimo ustawienia jakości na 100%, obrazy są nadal spłaszczone.
Jakoś wątpię, że usunięcie EXIF zmniejsza rozmiar pliku o tyle. Wydaje mi się, że zmniejszenie rozmiaru pliku wynika raczej z rekompresji, może z niższej jakości niż poprzednio. Czy próbowałeś użyć 'getCompressionQuality()' i 'setCompressionQuality()'? –
@GeraldSchneider to zależy. Widziałem pliki z dosłownie setkami kilobajtów (prawie pół miliona w ekstremalnych przypadkach) danych EXIF. Rozbiórka obrazów EXIF to zawsze dobry pomysł. – mingos
To może być prawdą w przypadku obrazu prosto z aparatu, ale z wygenerowanej miniatury? –