使用Node.js中的piexifjs修改图像文件的Exif信息的一个特定字段

时间:2018-05-16 11:12:24

标签: node.js orientation exif

我正在使用涉及一些图像处理的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数据的其他字段?

0 个答案:

没有答案