Я нашел решение, но он не совершенен ...
Примечание: Опубликованная решение применяется ОС Windows.
Где ссылка на метаданные изображения, я полагаю, вы имеете в виду Exif data.
Согласно https://www.mathworks.com/matlabcentral/answers/152559-writing-exif-data-to-jpg
К сожалению, в настоящее время нет функциональность вне-полки для записи данных EXIF в файл изображения в MATLAB. Вы можете читать только данные EXIF из файла изображения (exifread и imfinfo).
Вы можете использовать run_exiftool сделать копию Exif данных от одного изображения к другому:
- Скачать и извлечь exiftool-10.25.zip
- Скопируйте файл ExifTool (-k) .exe в рабочую папку и переименовать файл в exiftool.exe
- Скачать run_exiftool из https://www.mathworks.com/matlabcentral/fileexchange/42000-run-exiftool, Копир getexif.m и putexif.m к вашей рабочей папке.
Попробуйте следующий пример кода:
%Copy the file from c:\Program Files\MATLAB\R2014b\mcr\toolbox\matlab\demos\ to local folder.
%Note: ngc6543a.jpg is part of Matlab installation.
copyfile([matlabroot, '/mcr/toolbox/matlab/demos/ngc6543a.jpg'], cd);
%Read image
I = imread('ngc6543a.jpg');
%Save I to myfile.jpg and add Exif data of ngc6543a.jpg to myfile.jpg
status = putexif(I, 'myfile.jpg', 'ngc6543a.jpg');
%Read Exif data from ngc6543a.jpg
[ngc6543a_exifdata, ngc6543a_nf] = getexif('ngc6543a.jpg');
%Read Exif data from myfile.jpg
[myfile_exifdata, myfilenf] = getexif('myfile.jpg');
Я получаю предупреждение: Warning: Exif tags may not have been copied
, но это, кажется, работает.
Результат:
>> ngc6543a_exifdata
ngc6543a_exifdata =
ExifToolVersion : 10.25
FileName : ngc6543a.jpg
Directory : .
FileSize : 27 kB
FileModifyDate : 2014:07:27 12:00:28+03:00
FileAccessDate : 2016:08:14 17:42:23+03:00
FileCreateDate : 2016:08:14 17:18:27+03:00
FilePermissions : rw-rw-rw-
FileType : JPEG
FileTypeExtension : jpg
MIMEType : image/jpeg
JFIFVersion : 1.01
ResolutionUnit : None
XResolution : 1
YResolution : 1
Comment : CREATOR: XV Version 3.00b Rev: 6/15/94 Quality = 75, Smoothing = 0.
ImageWidth : 600
ImageHeight : 650
EncodingProcess : Baseline DCT, Huffman coding
BitsPerSample : 8
ColorComponents : 3
YCbCrSubSampling : YCbCr4:2:0 (2 2)
ImageSize : 600x650
Megapixels : 0.390
>> myfile_exifdata
myfile_exifdata =
ExifToolVersion : 10.25
FileName : myfile.jpg
Directory : .
FileSize : 75 kB
FileModifyDate : 2016:08:14 18:08:51+03:00
FileAccessDate : 2016:08:14 18:08:51+03:00
FileCreateDate : 2016:08:14 17:40:22+03:00
FilePermissions : rw-rw-rw-
FileType : JPEG
FileTypeExtension : jpg
MIMEType : image/jpeg
JFIFVersion : 1.01
ResolutionUnit : None
XResolution : 1
YResolution : 1
Comment : CREATOR: XV Version 3.00b Rev: 6/15/94 Quality = 75, Smoothing = 0.
ImageWidth : 600
ImageHeight : 650
EncodingProcess : Baseline DCT, Huffman coding
BitsPerSample : 8
ColorComponents : 3
YCbCrSubSampling : YCbCr4:2:0 (2 2)
ImageSize : 600x650
Megapixels : 0.390
'imread' не читает в метаданных только пиксельных данных. Итак, как бы вы ожидали, что 'imwrite' будет писать метаданные, если он никогда не читается? – Suever