Saya ingin menghapus informasi EXIF (termasuk thumbnail, metadata, info kamera ... semuanya!) Dari file JPEG, tetapi saya tidak ingin mengompresnya kembali, karena mengkompres ulang JPEG akan menurunkan kualitas, dan biasanya meningkatkan ukuran file.
Saya mencari solusi Unix / Linux, bahkan lebih baik lagi jika menggunakan command-line. Jika memungkinkan, gunakan ImageMagick (alat konversi). Jika itu tidak memungkinkan, skrip Python, Perl, PHP (atau bahasa umum lainnya pada Linux) kecil tidak masalah.
Ada pertanyaan serupa, tetapi terkait dengan .NET .
unix
imagemagick
jpeg
exif
Denilson Sa Maia
sumber
sumber
Jawaban:
exiftool melakukan pekerjaan untuk saya, ini ditulis dalam perl jadi harus bekerja untuk Anda pada setiap o / s
https://exiftool.org/
penggunaan:
sumber
sudo apt-get install libimage-exiftool-perl
brew install exiftool
-overwrite_original
sakelar dan program tidak akan membuat file cadangan.exiftool -EXIF= image.jpg
Dengan imagemagick:
sumber
-strip
menghapus profil warna. Bagi siapa pun yang mencoba menghapus data EXIF tanpa kehilangan informasi profil, lihat solusi saya di sini: stackoverflow.com/a/17516878/1854499ImageMagick memiliki parameter -strip , tetapi mengkompres ulang gambar sebelum disimpan. Jadi, parameter ini tidak berguna untuk kebutuhan saya.
Topik ini dari forum ImageMagick menjelaskan bahwa tidak ada dukungan untuk operasi lossless JPEG di ImageMagick (setiap kali ini berubah, silakan kirim komentar dengan tautan!), Dan sarankan menggunakan jpegtran (dari libjpeg):
(Jika Anda tidak yakin tentang saya menjawab pertanyaan saya sendiri, baca ini dan ini dan ini )
sumber
jpegtran -copy none image.jpg newimage.jpg
-progressive
Ini akan mengurangi ukuran.Anda mungkin juga ingin melihat ke Exiv2 - sangat cepat (C ++ dan tanpa kompresi ulang), itu baris perintah, dan juga menyediakan pustaka untuk manipulasi EXIF yang dapat Anda tautkan. Saya tidak tahu berapa banyak distro Linux yang membuatnya tersedia, tetapi di CentOS saat ini tersedia di repo basis.
Pemakaian:
sumber
Saya akan mengusulkan
jhead
:Hanya 123Kb pada debian / ubuntu, tidak kompres ulang. Catat bahwa itu mengubah gambar, jadi salin yang asli jika Anda membutuhkannya.
sumber
Saya baru-baru ini melakukan proyek ini dalam C. Kode di bawah ini melakukan hal berikut:
1) Mendapat orientasi gambar saat ini.
2) Menghapus semua data yang terkandung dalam
APP1
(Exif data) danAPP2
(Flashpix data) dengan mengosongkan.3) Menciptakan
APP1
penanda orientasi dan menetapkannya ke nilai asli.4) Menemukan
EOI
penanda pertama (Akhir Gambar) dan memotong file jika perlu.Beberapa hal yang perlu diperhatikan pertama adalah:
1) Program ini digunakan untuk kamera Nikon saya. Format JPEG Nikon menambahkan sesuatu ke akhir setiap file yang dibuatnya. Mereka menyandikan data ini ke akhir file gambar dengan membuat
EOI
penanda kedua . Biasanya program gambar membaca hingga yang pertamaEOI
penanda ditemukan. Nikon memiliki informasi setelah ini yang terpotong oleh program saya.2) Karena ini untuk format Nikon, diasumsikan
big endian
urutan byte. Jika file gambar Anda digunakanlittle endian
, beberapa penyesuaian perlu dilakukan.3) Ketika mencoba menggunakan
ImageMagick
untuk menghapus data exif, saya perhatikan bahwa saya berakhir dengan file yang lebih besar dari yang saya mulai. Ini membuat saya percaya bahwaImagemagick
meng-encode data yang Anda inginkan dihapus, dan menyimpannya di tempat lain dalam file. Sebut saya kuno, tetapi ketika saya menghapus sesuatu dari file, saya ingin ukuran file lebih kecil jika tidak dengan ukuran yang sama. Hasil lainnya menyarankan penambangan data.Dan ini kodenya:
Semoga ini bisa membantu seseorang!
sumber
Petunjuk untuk kenyamanan: Jika Anda menggunakan Windows, Anda dapat menerapkan file REG ke registri, untuk menginstal entri dalam menu konteks, sehingga Anda dapat dengan mudah menghapus metadata dengan mengklik kanan file dan memilih perintah.
Misalnya (ingat untuk mengedit jalur untuk menunjuk ke tempat executable diinstal pada komputer Anda):
Untuk file JPEG, JPG, JPE, JFIF: perintah " Hapus metadata "
(menggunakan ExifTool , simpan file asli sebagai cadangan)
exiftool -all= image.jpg
JPG-RemoveExif.reg
Untuk file PNG: perintah " Konversi ke PNG yang diperkecil "
(menggunakan ImageMagick , ubah data yang menimpa file asli)
convert -background none -strip -set filename:n "%t" image.png "%[filename:n].png"
PNG-Minify.reg
Terkait: konversi PNG ke ICO dalam menu konteks .
sumber
Kami menggunakan ini untuk menghapus data lintang dari file TIFF:
exiv2 mo -M"del Exif.GPSInfo.GPSLatitude" IMG.TIF
tempat Anda dapat menggunakannyaexiv2 -pa IMG.TIF
untuk mendaftar semua metadata.sumber
Untuk strip EXIF lossless Anda dapat menggunakan libexif , yang tersedia dengan cygwin . Hapus EXIF dan gambar mini untuk menganonimkan gambar:
Drag-n-drop
.bat
file untuk digunakan dengan cygwin:sumber
Perangkat Lunak Lainnya:
QuickFix MetAbility
"MetabilityQuickFix menghapus semua informasi pribadi Anda dan data lokasi GPS dari semua foto Anda, hanya dengan satu klik mouse. Ini menggosok semua item metadata dari Exif, Iptc dan XMP, memblokir data dengan aman dari file JPEG Anda dan secara otomatis membuat salinan cadangan dari file asli "
JPEG & PNG Stripper
"Alat untuk melucuti / membersihkan / menghapus metadata yang tidak diperlukan (sampah) dari file JPG / JPEG / JFIF & PNG. Kualitas gambar TIDAK MEMPENGARUHI. Termasuk dukungan baris perintah. Cukup tentukan folder atau file pada commandline (wildcard diizinkan)"
sumber
Jika Anda sudah menggunakan jpegoptim, Anda dapat menggunakannya untuk menghapus exif juga.
sumber