Bạn có một (rất) khả năng hạn chế để làm điều này trong imwrite
: cho JPEG nó chỉ chấp nhận BitDepth
, Comment
, Mode
và Quality
. Và Mode
và Quality
không được trả lại từ iminfo
. Trong imwrite
bạn có thể làm:
iminfo = imfinfo('Base_Pic.jpg')
imwrite(...,'BitDepth',iminfo.BitDepth, 'Comment',iminfo.Comment);
Khác hơn thế, đó không phải là một cách để làm điều này với Image Processing Toolbox/Matlab như xa như tôi biết. Nếu bạn có TIFF hoặc hình ảnh y tế có một số hộp công cụ làm điều đó, nhưng tôi chưa bao giờ tìm thấy bất kỳ jpeg nào, ngay cả trên File Exchange ...
Nếu bạn có exiftool
trên hệ thống, bạn có thể sử dụng
[status info]=system('exiftool -s Base_Pic.jpg');
info
bây giờ chứa một danh sách các tên thẻ và giá trị thẻ, ví dụ:
ExifToolVersion : 8.75
FileName : Base_Pic.jpg
Directory : Pictures
FileSize : 2.0 MB
FileModifyDate : 2011:10:27 08:41:55+10:00
FilePermissions : rw-rw-r--
FileType : JPEG
MIMEType : image/jpeg
JFIFVersion : 1.01
ExifByteOrder : Big-endian (Motorola, MM)
Make : Apple
Model : iPhone 4
...
và nếu bạn chia trên ruột :
bạn có thể viết chúng trở lại sử dụng exiftool -[TAG]=[VALUE]
, ví dụ: exiftool -Make=Apple -Model="iPhone 4" ...
.
Hoặc bạn có thể sao chép chúng "tất cả" trong một hit hôi:
system('exiftool -overwrite_original -tagsFromFile Base_Pic.jpg Updated_Image.jpg')
Nguồn
2012-01-30 02:07:57