引用3rd jar来实现信息写入
下载 commons-imaging-1.0-SNAPSHOT.jar, 这个方法的好处是如果图片里面没有字段. 比如orientation 没有,但是
还可以写入. 场景: 比如你把多张图片合成之后,生成的新的图片里面没有了信息, 那么你就可以重新写入信息.
private static void writePic(String srcJpeg) {
File file = new File(srcJpeg);
try {
这个类在这里下载
//https://github.com/skypx/JpegMetadate
JpegInfo inJpegInfo = new JpegInfo(file);
try {
inJpegInfo.set(TiffTagConstants.TIFF_TAG_MAKE, "SKY");
inJpegInfo.set(ExifTagConstants.EXIF_TAG_ISO, (short)30);
inJpegInfo.set(ExifTagConstants.EXIF_TAG_APERTURE_VALUE, new RationalNumber(2,4));
inJpegInfo.set(ExifTagConstants.EXIF_TAG_FLASH, (short) ExifTagConstants.FLASH_VALUE_OFF);
rewriteInplace(inJpegInfo, file);
} catch (ImageWriteException e) {
e.printStackTrace();
} catch (ImageReadException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static final String SUFFIX_TEMP_FILE = ".rewrite-exif";
private static void rewriteInplace(JpegInfo exif, File file) throws
IOException, ImageReadException, ImageWriteException {
final long lastModified = file.lastModified();
File tempFile = File.createTempFile(
file.getName(), SUFFIX_TEMP_FILE, file.getParentFile());
final FileOutputStream out = new FileOutputStream(tempFile);
boolean success = false;
try {
try {
exif.rewrite(file, out, true);
out.flush();
} finally {
out.close();
}
success = tempFile.renameTo(file);
if (success) {
if (!file.setLastModified(lastModified)) {
Log.w("TAG", "Failed to set last modified time to " + file.getAbsolutePath());
}
} else {
throw new IOException("Could not replace file " + file);
}
} finally {
if (!success) {
if (!tempFile.delete()) {
Log.w("TAG","Could not delete temporary file " + tempFile.getAbsolutePath());
}
}
}
}