0
点赞
收藏
分享

微信扫一扫

206-java修改图片文件的元属性值TIFF_TAG_SOFTWARE等

base64的图片转为文件

//base64的图片转为文件
String base64String = obj.getString("base64");
byte[] imageBytes = java.util.Base64.getDecoder().decode(base64String);

File outputFile = null;

File tmpPathDir = new File(tmpPath);
tmpPathDir.mkdirs();
String filePath = tmpPath+"a-"+IdUtil.simpleUUID() +".jpg";
outputFile = new File(filePath);
try (FileOutputStream fos = new FileOutputStream(filePath)) {
    fos.write(imageBytes);
}
            

使用依赖:

        <dependency>
            <groupId>com.drewnoakes</groupId>
            <artifactId>metadata-extractor</artifactId>
            <version>2.18.0</version>
        </dependency>

获取文件的Metadata,并修改,保存到新的文件:

            JpegImageMetadata metadata = (JpegImageMetadata) Imaging.getMetadata(outputFile);
            TiffImageMetadata exif = metadata.getExif();
            // 设置或更新 "Software" 属性
            TiffOutputSet outputSet = exif.getOutputSet();

            final TiffOutputDirectory rootDirectoryt=outputSet.getOrCreateRootDirectory();

            rootDirectoryt.removeField(TiffTagConstants.TIFF_TAG_SOFTWARE);
            rootDirectoryt.add(TiffTagConstants.TIFF_TAG_SOFTWARE,str2);
            //写入后,保存
            String outFileName = tmpPath+"b-"+IdUtil.simpleUUID()+".jpg";
            outFile = new File(outFileName);
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outFile));
            new ExifRewriter().updateExifMetadataLossless(outputFile, bos, outputSet);

从新生成的文件,读取内容:

            int length = (int) outputFile.length();
            byte[] bArr2 = new byte[length];
            DataInputStream dataInputStream = new DataInputStream(new FileInputStream(outFileName));
            dataInputStream.readFully(bArr2);
            dataInputStream.close();

从字节转为base64:

String result = Base64.getEncoder().encodeToString(bArr2);

最后,删除临时文件:

                if(outFile!=null){
                    outFile.delete();
                }
                if(outputFile!=null){
                    outputFile.delete();
                }
举报

相关推荐

0 条评论