修改图片exif信息出现类转换异常
InputStream fip = new BufferedInputStream(new FileInputStream("D://nozip//2.jpg")); // No need to buffer
10. LLJTran llj = new LLJTran(fip);
11. try {
12. llj.read(LLJTran.READ_INFO, true);
13. } catch (LLJTranException e) {
14. e.printStackTrace();
15. }
16.
17. Exif exif = (Exif) llj.getImageInfo();
18.
19. /* Set some values directly to gps IFD */
20.
21. Entry e;
22.
23. // Set Latitude
24. e = new Entry(Exif.ASCII);
25. e.setValue(0, 'N');
26. exif.setTagValue(Exif.GPSLatitudeRef,-1, e, true);
27.
28. //设置具体的精度
29. e = new Entry(Exif.RATIONAL);
30. e.setValue(0, new Rational(31, 1));
31. e.setValue(1, new Rational(21, 1));
32. e.setValue(2, new Rational(323, 1));
33. exif.setTagValue(Exif.GPSLatitude,-1, e, true);
34.
35. // Set Longitude
36. e = new Entry(Exif.ASCII);
37. e.setValue(0, 'E');
38. exif.setTagValue(Exif.GPSLongitudeRef,-1, e, true);
39.
40. //设置具体的纬度
41. e = new Entry(Exif.RATIONAL);
42. e.setValue(0, new Rational(120, 1));
43. e.setValue(1, new Rational(58, 1));
44. e.setValue(2, new Rational(531, 1));
45. exif.setTagValue(Exif.GPSLongitude,-1, e, true);
46.
47. llj.refreshAppx(); // Recreate Marker Data for changes done
48.
49. //改写后的文件,文件必须存在
50. OutputStream out = new BufferedOutputStream(new FileOutputStream("D://nozip//1.jpg"));
51.
52. // Transfer remaining of image to output with new header.
53. llj.xferInfo(null, out, LLJTran.REPLACE, LLJTran.REPLACE);
54.
55. fip.close();
56. out.close();
57.
58. llj.freeMemory();