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 条评论