Я разрабатываю веб-приложение с использованием Node.js, которое включает в себя некоторую обработку изображений. В моем приложении мне нужно изменить информацию Exif изображения (ориентация), только одно поле. И тогда я хочу, чтобы вся остальная информация осталась прежней. Я использую эту библиотеку .
Я использую этот код
var filename1 = "test.jpg";
var filename2 = "out1.jpg";
var jpeg = fs.readFileSync(filename1);
var data = jpeg.toString("binary");
var zeroth = {}; //exifData.image;//{};//exifData.image//{};
var exif = {};
var gps = {};
zeroth[piexif.ImageIFD.Make] = "Make";
zeroth[piexif.ImageIFD.XResolution] = [777, 1];
zeroth[piexif.ImageIFD.YResolution] = [777, 1];
zeroth[piexif.ImageIFD.Software] = "Piexifjs";
exif[piexif.ExifIFD.DateTimeOriginal] = "2010:10:10 10:10:10";
exif[piexif.ExifIFD.LensMake] = "LensMake";
exif[piexif.ExifIFD.Sharpness] = 777;
exif[piexif.ExifIFD.LensSpecification] = [[1, 1], [1, 1], [1, 1], [1, 1]];
gps[piexif.GPSIFD.GPSVersionID] = [7, 7, 7, 7];
gps[piexif.GPSIFD.GPSDateStamp] = "1999:99:99 99:99:99";
var exifObj = {"0th":zeroth, "Exif":exif, "GPS":gps};
var exifbytes = piexif.dump(exifObj);
var newData = piexif.insert(exifbytes, data);
var newJpeg = new Buffer(newData, "binary");
fs.writeFileSync(filename2, newJpeg)
То, что делает код выше, создает новый файл и информацию Exif. Затем вставьте эту новую информацию Exif в новый файл изображения, но я не хочу, потому что я изменяю только одно поле. Я только хочу изменить ориентацию только и сохранить другие поля. Итак, я попытался сделать что-то вроде этого:
var filename1 = "test.jpg";
var filename2 = "out1.jpg";
var jpeg = fs.readFileSync(filename1);
var data = jpeg.toString("binary");
var zeroth = {}; //exifData.image;//{};//exifData.image//{};
var exif = {};
var gps = {};
zeroth[piexif.ImageIFD.Orientation] = 1;
var exifObj = {"0th":zeroth, "Exif":exif, "GPS":gps};
var exifbytes = piexif.dump(exifObj);
var newData = piexif.insert(exifbytes, data);
fs.writeFileSync(filename2, newJpeg)
Но попытка не сработала. Итак, как я могу изменить только одно определенное поле (ориентация) и поддерживать другие поля данных Exif файла изображения, используя piexifjs?