Chcę usunąć informacje EXIF (w tym miniaturę, metadane, informacje o aparacie ... wszystko!) Z plików JPEG, ale nie chcę ich ponownie kompresować, ponieważ ponowna kompresja JPEG obniży jakość, a także zwykle zwiększy rozmiar pliku.
Szukam rozwiązania Unix / Linux, nawet lepszego, jeśli używam wiersza poleceń. Jeśli to możliwe, użyj ImageMagick (narzędzie do konwersji). Jeśli to nie jest możliwe, mały skrypt w Pythonie, Perlu, PHP (lub innym popularnym języku w systemie Linux) byłby w porządku.
Jest podobne pytanie, ale związane z .NET .
unix
imagemagick
jpeg
exif
Denilson Sá Maia
źródło
źródło
Odpowiedzi:
exiftool robi to za mnie, jest napisane w perlu, więc powinno działać dla ciebie na każdym systemie operacyjnym
https://exiftool.org/
stosowanie :
źródło
sudo apt-get install libimage-exiftool-perl
brew install exiftool
-overwrite_original
przełącznikowi dodawania programu, a program nie utworzy plików kopii zapasowej.exiftool -EXIF= image.jpg
Z imagemagick:
źródło
-strip
usuwa profile kolorów. Dla każdego, kto próbuje usunąć dane EXIF bez utraty informacji o profilu, zobacz moje rozwiązanie tutaj: stackoverflow.com/a/17516878/1854499ImageMagick ma parametr -strip , ale przed zapisaniem ponownie kompresuje obraz. Zatem ten parametr jest dla mnie bezużyteczny.
W tym temacie na forum ImageMagick wyjaśniono, że ImageMagick nie obsługuje bezstratnych operacji JPEG (jeśli to się zmieni, prosimy o przesłanie komentarza z linkiem!) I sugeruje użycie jpegtran (z libjpeg):
(Jeśli nie jesteś pewien, czy odpowiadam na moje własne pytanie, przeczytaj to i to i to )
źródło
jpegtran -copy none image.jpg newimage.jpg
-progressive
Spowoduje to zmniejszenie rozmiaru.Możesz również zajrzeć do Exiv2 - jest naprawdę szybki (C ++ i bez rekompresji), jest to wiersz poleceń, a także zapewnia bibliotekę do manipulacji EXIF, z którą możesz się połączyć. Nie wiem, ile dystrybucji Linuksa udostępnia, ale w CentOS jest obecnie dostępny w repozytorium podstawowym.
Stosowanie:
źródło
Proponuję
jhead
:Tylko 123 KB na debianie / ubuntu, nie kompresuje ponownie. Zauważ jednak, że mutuje obraz, więc skopiuj oryginał, jeśli go potrzebujesz.
źródło
Niedawno podjąłem się tego projektu w C. Poniższy kod wykonuje następujące czynności:
1) Pobiera bieżącą orientację obrazu.
2) Usuwa wszystkie dane zawarte w
APP1
(Dane Exif) iAPP2
(Dane Flashpix) przez wygaszenie.3) odtwarza
APP1
znacznik orientacji i przywraca mu oryginalną wartość.4) Znajduje pierwszy
EOI
znacznik (Koniec obrazu) iw razie potrzeby obcina plik.Najpierw należy zwrócić uwagę na:
1) Ten program jest używany w moim aparacie Nikon. Format JPEG firmy Nikon dodaje coś na samym końcu każdego tworzonego pliku. Kodują te dane na końcu pliku obrazu, tworząc drugi
EOI
znacznik. Zwykle programy graficzne czytają do pierwszegoEOI
znalezionego znacznika. Firma Nikon ma informacje, które następnie są obcięte przez mój program.2) Ponieważ jest to format firmy Nikon, przyjmuje
big endian
kolejność bajtów. Jeśli plik obrazu używalittle endian
, należy wprowadzić pewne poprawki.3) Kiedy próbowałem
ImageMagick
usunąć dane exif, zauważyłem, że otrzymałem większy plik niż ten, od którego zacząłem. To prowadzi mnie do przekonania, żeImagemagick
koduje dane, które chcesz usunąć, i przechowuje je w innym miejscu w pliku. Nazwij mnie staroświeckim, ale kiedy usuwam coś z pliku, chcę, aby rozmiar pliku był mniejszy, jeśli nie taki sam. Wszelkie inne wyniki sugerują eksplorację danych.A oto kod:
Mam nadzieję, że to komuś pomoże!
źródło
Wskazówka dla wygody: jeśli korzystasz z systemu Windows, możesz zastosować plik REG do rejestru, aby zainstalować wpis w menu kontekstowym, dzięki czemu możesz łatwo usunąć metadane, klikając plik prawym przyciskiem myszy i wybierając polecenie.
Na przykład (pamiętaj, aby edytować ścieżki tak, aby wskazywały miejsce instalacji plików wykonywalnych na komputerze):
W przypadku plików JPEG, JPG, JPE, JFIF: polecenie „ Usuń metadane ”
(przy użyciu ExifTool , zachowuje oryginalny plik jako kopię zapasową)
exiftool -all= image.jpg
JPG-RemoveExif.reg
W przypadku plików PNG: polecenie „ Konwertuj na zminimalizowany plik PNG ”
(przy użyciu programu ImageMagick zmienia dane nadpisując oryginalny plik)
convert -background none -strip -set filename:n "%t" image.png "%[filename:n].png"
PNG-Minify.reg
Powiązane: przekonwertuj pliki PNG na ICO w menu kontekstowym .
źródło
Użyliśmy tego do usunięcia danych szerokości geograficznej z pliku TIFF:
exiv2 mo -M"del Exif.GPSInfo.GPSLatitude" IMG.TIF
gdzie możesz użyćexiv2 -pa IMG.TIF
do wyświetlenia wszystkich metadanych.źródło
W przypadku bezstratnego paska EXIF możesz użyć libexif , który jest dostępny z cygwin . Usuń zarówno EXIF, jak i miniaturę, aby anonimizować obraz:
.bat
Plik przeciągnij i upuść do użytku z cygwin:źródło
Inne oprogramowanie:
MetAbility QuickFix
„MetabilityQuickFix usuwa wszystkie dane osobowe i dane lokalizacji GPS ze wszystkich zdjęć za pomocą jednego kliknięcia myszą. Wyczyści wszystkie elementy metadanych z bloków danych Exif, Iptc i XMP bezpiecznie z plików JPEG i automatycznie tworzy kopie zapasowe oryginalnych plików "
Stripper JPEG i PNG
„Narzędzie do usuwania / czyszczenia / usuwania zbędnych metadanych (śmieci) z plików JPG / JPEG / JFIF i PNG. NIE MA WPŁYWU na jakość obrazu. Obejmuje obsługę wiersza poleceń. Po prostu określ folder lub plik w wierszu poleceń (dozwolone symbole wieloznaczne)”
źródło
Jeśli już używasz jpegoptim, możesz go również użyć do usunięcia exif.
źródło