我正在使用涉及一些图像处理的Node.js开发Web应用程序。在我的应用程序中,我需要修改图像的Exif信息(Orientation),只需要修改一个字段。然后我希望所有其他信息保持不变。我正在使用this library。
我正在使用此代码
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)
但这次尝试没有奏效。那么,如何使用piexifjs仅修改一个特定字段(Orientation)并维护图像文件的Exif数据的其他字段?