EPImage.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. package epson.print;
  2. import android.graphics.BitmapFactory;
  3. import android.media.ExifInterface;
  4. import android.os.Parcel;
  5. import android.os.Parcelable;
  6. import java.io.File;
  7. import java.io.IOException;
  8. import epson.image.epsonImage;
  9. import epson.print.Util.EPLog;
  10. public class EPImage implements Parcelable {
  11. public static final Creator<EPImage> CREATOR = new Creator<EPImage>() {
  12. public EPImage createFromParcel(Parcel parcel) {
  13. return new EPImage(parcel);
  14. }
  15. public EPImage[] newArray(int i) {
  16. return new EPImage[i];
  17. }
  18. };
  19. public static final int EPS_ROTATE_0 = 0;
  20. public static final int EPS_ROTATE_180 = 180;
  21. public static final int EPS_ROTATE_270 = 270;
  22. public static final int EPS_ROTATE_90 = 90;
  23. public static final int FILE_INFO_NO_INFO = 0;
  24. public static final int FILE_INFO_WITH_FILE_TYPE = 2;
  25. public static final int FILE_INFO_WITH_ORG_FILE_NAME = 1;
  26. public static final int FILE_TYPE_BMP = 1;
  27. public static final int FILE_TYPE_JPEG = 2;
  28. public static final int FILE_TYPE_PNG = 3;
  29. public static final int FILE_TYPE_SCAN = 4098;
  30. public static final int FILE_TYPE_TIFF = 4;
  31. public static final int FILE_TYPE_UNKNOWN = 0;
  32. public static final int FILE_TYPE_WEB = 4097;
  33. private static final String TAG = "EPImage";
  34. public int decodeHeight;
  35. public volatile String decodeImageFileName;
  36. public int decodeWidth;
  37. public int index;
  38. public boolean isNotPhot;
  39. public volatile boolean isPaperLandScape;
  40. public volatile String loadImageFileName;
  41. private epsonImage mEpsonImage;
  42. private int mFileInfo;
  43. private int mFileType;
  44. private String mOrgFileNameForLogger;
  45. public volatile int previewHeight;
  46. public String previewImageFileName;
  47. public volatile float previewImageRectBottom;
  48. public int previewImageRectCenterX;
  49. public int previewImageRectCenterY;
  50. public volatile float previewImageRectLeft;
  51. public volatile float previewImageRectRight;
  52. public volatile float previewImageRectTop;
  53. public volatile int previewPaperRectBottom;
  54. public volatile int previewPaperRectLeft;
  55. public volatile int previewPaperRectRight;
  56. public volatile int previewPaperRectTop;
  57. public volatile int previewWidth;
  58. public String printImageFileName;
  59. public int rotate;
  60. public float scaleFactor;
  61. public volatile int srcHeight;
  62. public volatile int srcWidth;
  63. public String thumbnailImageFileName;
  64. public String webUrl;
  65. public int describeContents() {
  66. return 0;
  67. }
  68. public EPImage() {
  69. index = 0;
  70. loadImageFileName = null;
  71. srcWidth = 0;
  72. srcHeight = 0;
  73. decodeImageFileName = null;
  74. decodeWidth = 0;
  75. decodeHeight = 0;
  76. thumbnailImageFileName = null;
  77. previewImageFileName = null;
  78. previewWidth = 0;
  79. previewHeight = 0;
  80. printImageFileName = null;
  81. isPaperLandScape = false;
  82. isNotPhot = false;
  83. rotate = 0;
  84. previewPaperRectLeft = 0;
  85. previewPaperRectTop = 0;
  86. previewPaperRectRight = 0;
  87. previewPaperRectBottom = 0;
  88. previewImageRectCenterX = 0;
  89. previewImageRectCenterY = 0;
  90. previewImageRectLeft = 0.0f;
  91. previewImageRectTop = 0.0f;
  92. previewImageRectRight = 0.0f;
  93. previewImageRectBottom = 0.0f;
  94. scaleFactor = 1.0f;
  95. webUrl = null;
  96. mFileInfo = 0;
  97. mFileType = 0;
  98. mOrgFileNameForLogger = null;
  99. }
  100. public EPImage(EPImage ePImage) {
  101. index = 0;
  102. loadImageFileName = null;
  103. srcWidth = 0;
  104. srcHeight = 0;
  105. decodeImageFileName = null;
  106. decodeWidth = 0;
  107. decodeHeight = 0;
  108. thumbnailImageFileName = null;
  109. previewImageFileName = null;
  110. previewWidth = 0;
  111. previewHeight = 0;
  112. printImageFileName = null;
  113. isPaperLandScape = false;
  114. isNotPhot = false;
  115. rotate = 0;
  116. previewPaperRectLeft = 0;
  117. previewPaperRectTop = 0;
  118. previewPaperRectRight = 0;
  119. previewPaperRectBottom = 0;
  120. previewImageRectCenterX = 0;
  121. previewImageRectCenterY = 0;
  122. previewImageRectLeft = 0.0f;
  123. previewImageRectTop = 0.0f;
  124. previewImageRectRight = 0.0f;
  125. previewImageRectBottom = 0.0f;
  126. scaleFactor = 1.0f;
  127. webUrl = null;
  128. mFileInfo = 0;
  129. mFileType = 0;
  130. mOrgFileNameForLogger = null;
  131. index = ePImage.index;
  132. loadImageFileName = ePImage.loadImageFileName;
  133. srcWidth = ePImage.srcWidth;
  134. srcHeight = ePImage.srcHeight;
  135. decodeImageFileName = ePImage.decodeImageFileName;
  136. decodeWidth = ePImage.decodeWidth;
  137. decodeHeight = ePImage.decodeHeight;
  138. thumbnailImageFileName = ePImage.thumbnailImageFileName;
  139. previewImageFileName = ePImage.previewImageFileName;
  140. previewWidth = ePImage.previewWidth;
  141. previewHeight = ePImage.previewHeight;
  142. printImageFileName = ePImage.printImageFileName;
  143. isPaperLandScape = ePImage.isPaperLandScape;
  144. isNotPhot = ePImage.isNotPhot;
  145. rotate = ePImage.rotate;
  146. previewPaperRectLeft = ePImage.previewPaperRectLeft;
  147. previewPaperRectTop = ePImage.previewPaperRectTop;
  148. previewPaperRectRight = ePImage.previewPaperRectRight;
  149. previewPaperRectBottom = ePImage.previewPaperRectBottom;
  150. previewImageRectCenterX = ePImage.previewImageRectCenterX;
  151. previewImageRectCenterY = ePImage.previewImageRectCenterY;
  152. previewImageRectLeft = ePImage.previewImageRectLeft;
  153. previewImageRectTop = ePImage.previewImageRectTop;
  154. previewImageRectRight = ePImage.previewImageRectRight;
  155. previewImageRectBottom = ePImage.previewImageRectBottom;
  156. scaleFactor = ePImage.scaleFactor;
  157. webUrl = ePImage.webUrl;
  158. }
  159. public EPImage(String str, int i) {
  160. boolean z = false;
  161. index = 0;
  162. loadImageFileName = null;
  163. srcWidth = 0;
  164. srcHeight = 0;
  165. decodeImageFileName = null;
  166. decodeWidth = 0;
  167. decodeHeight = 0;
  168. thumbnailImageFileName = null;
  169. previewImageFileName = null;
  170. previewWidth = 0;
  171. previewHeight = 0;
  172. printImageFileName = null;
  173. isPaperLandScape = false;
  174. isNotPhot = false;
  175. rotate = 0;
  176. previewPaperRectLeft = 0;
  177. previewPaperRectTop = 0;
  178. previewPaperRectRight = 0;
  179. previewPaperRectBottom = 0;
  180. previewImageRectCenterX = 0;
  181. previewImageRectCenterY = 0;
  182. previewImageRectLeft = 0.0f;
  183. previewImageRectTop = 0.0f;
  184. previewImageRectRight = 0.0f;
  185. previewImageRectBottom = 0.0f;
  186. scaleFactor = 1.0f;
  187. webUrl = null;
  188. mFileInfo = 0;
  189. mFileType = 0;
  190. mOrgFileNameForLogger = null;
  191. index = i;
  192. loadImageFileName = str;
  193. if (loadImageFileName == null) {
  194. EPLog.w(TAG, "loadImageFileName is null");
  195. } else if (!new File(str).exists()) {
  196. EPLog.w(TAG, str + " is not exists.");
  197. } else {
  198. BitmapFactory.Options options = new BitmapFactory.Options();
  199. options.inJustDecodeBounds = true;
  200. BitmapFactory.decodeFile(loadImageFileName, options);
  201. if (options.outWidth <= 0 || options.outHeight <= 0) {
  202. EPLog.e(TAG, "BitmapFactory.decodeFile Failed");
  203. if (mEpsonImage == null) {
  204. mEpsonImage = new epsonImage();
  205. }
  206. epsonImage epsonimage = mEpsonImage;
  207. if (epsonimage != null) {
  208. int[] iArr = new int[2];
  209. epsonimage.epsmpGetImageSize2(str, iArr);
  210. srcWidth = iArr[0];
  211. srcHeight = iArr[1];
  212. if (srcWidth > srcHeight) {
  213. isPaperLandScape = true;
  214. } else {
  215. isPaperLandScape = false;
  216. }
  217. }
  218. } else {
  219. srcWidth = options.outWidth;
  220. srcHeight = options.outHeight;
  221. if (srcWidth > srcHeight) {
  222. isPaperLandScape = true;
  223. } else {
  224. isPaperLandScape = false;
  225. }
  226. }
  227. try {
  228. int attributeInt = new ExifInterface(loadImageFileName).getAttributeInt(android.support.media.ExifInterface.TAG_ORIENTATION, 0);
  229. if (attributeInt == 6 || attributeInt == 8) {
  230. int i2 = srcWidth;
  231. srcWidth = srcHeight;
  232. srcHeight = i2;
  233. isPaperLandScape = !isPaperLandScape ? true : z;
  234. }
  235. } catch (IOException e) {
  236. e.printStackTrace();
  237. }
  238. }
  239. }
  240. public String getLoadImageFileName() {
  241. return loadImageFileName;
  242. }
  243. public boolean isExtentionAvailable() {
  244. return mFileInfo != 2;
  245. }
  246. public String getExtention() {
  247. String str;
  248. switch (mFileInfo) {
  249. case 0:
  250. str = loadImageFileName;
  251. break;
  252. case 1:
  253. str = mOrgFileNameForLogger;
  254. break;
  255. case 2:
  256. return "";
  257. default:
  258. return "";
  259. }
  260. int lastIndexOf = str.lastIndexOf(47);
  261. int lastIndexOf2 = str.lastIndexOf(46);
  262. return (lastIndexOf2 < 0 || lastIndexOf2 < lastIndexOf) ? "" : str.substring(lastIndexOf2);
  263. }
  264. public int getFileType() {
  265. return mFileType;
  266. }
  267. public void setOrgName(String str) {
  268. mFileInfo = 1;
  269. mOrgFileNameForLogger = str;
  270. }
  271. public String getOriginalFileName() {
  272. String str = mOrgFileNameForLogger;
  273. if (str != null) {
  274. return str;
  275. }
  276. return loadImageFileName;
  277. }
  278. public void setType(int i) {
  279. mFileInfo = 2;
  280. mFileType = i;
  281. }
  282. private EPImage(Parcel parcel) {
  283. index = 0;
  284. loadImageFileName = null;
  285. srcWidth = 0;
  286. srcHeight = 0;
  287. decodeImageFileName = null;
  288. decodeWidth = 0;
  289. decodeHeight = 0;
  290. thumbnailImageFileName = null;
  291. previewImageFileName = null;
  292. previewWidth = 0;
  293. previewHeight = 0;
  294. printImageFileName = null;
  295. isPaperLandScape = false;
  296. isNotPhot = false;
  297. rotate = 0;
  298. previewPaperRectLeft = 0;
  299. previewPaperRectTop = 0;
  300. previewPaperRectRight = 0;
  301. previewPaperRectBottom = 0;
  302. previewImageRectCenterX = 0;
  303. previewImageRectCenterY = 0;
  304. previewImageRectLeft = 0.0f;
  305. previewImageRectTop = 0.0f;
  306. previewImageRectRight = 0.0f;
  307. previewImageRectBottom = 0.0f;
  308. scaleFactor = 1.0f;
  309. webUrl = null;
  310. mFileInfo = 0;
  311. mFileType = 0;
  312. mOrgFileNameForLogger = null;
  313. index = parcel.readInt();
  314. loadImageFileName = parcel.readString();
  315. srcWidth = parcel.readInt();
  316. srcHeight = parcel.readInt();
  317. decodeImageFileName = parcel.readString();
  318. decodeWidth = parcel.readInt();
  319. decodeHeight = parcel.readInt();
  320. thumbnailImageFileName = parcel.readString();
  321. previewImageFileName = parcel.readString();
  322. previewWidth = parcel.readInt();
  323. previewHeight = parcel.readInt();
  324. printImageFileName = parcel.readString();
  325. boolean[] zArr = new boolean[1];
  326. parcel.readBooleanArray(zArr);
  327. isPaperLandScape = zArr[0];
  328. parcel.readBooleanArray(zArr);
  329. isNotPhot = zArr[0];
  330. rotate = parcel.readInt();
  331. previewPaperRectLeft = parcel.readInt();
  332. previewPaperRectTop = parcel.readInt();
  333. previewPaperRectRight = parcel.readInt();
  334. previewPaperRectBottom = parcel.readInt();
  335. previewImageRectCenterX = parcel.readInt();
  336. previewImageRectCenterY = parcel.readInt();
  337. previewImageRectLeft = parcel.readFloat();
  338. previewImageRectTop = parcel.readFloat();
  339. previewImageRectRight = parcel.readFloat();
  340. previewImageRectBottom = parcel.readFloat();
  341. scaleFactor = parcel.readFloat();
  342. webUrl = parcel.readString();
  343. mFileInfo = parcel.readInt();
  344. mFileType = parcel.readInt();
  345. mOrgFileNameForLogger = parcel.readString();
  346. }
  347. public void writeToParcel(Parcel parcel, int i) {
  348. parcel.writeInt(index);
  349. parcel.writeString(loadImageFileName);
  350. parcel.writeInt(srcWidth);
  351. parcel.writeInt(srcHeight);
  352. parcel.writeString(decodeImageFileName);
  353. parcel.writeInt(decodeWidth);
  354. parcel.writeInt(decodeHeight);
  355. parcel.writeString(thumbnailImageFileName);
  356. parcel.writeString(previewImageFileName);
  357. parcel.writeInt(previewWidth);
  358. parcel.writeInt(previewHeight);
  359. parcel.writeString(printImageFileName);
  360. parcel.writeBooleanArray(new boolean[]{isPaperLandScape});
  361. parcel.writeBooleanArray(new boolean[]{isNotPhot});
  362. parcel.writeInt(rotate);
  363. parcel.writeInt(previewPaperRectLeft);
  364. parcel.writeInt(previewPaperRectTop);
  365. parcel.writeInt(previewPaperRectRight);
  366. parcel.writeInt(previewPaperRectBottom);
  367. parcel.writeInt(previewImageRectCenterX);
  368. parcel.writeInt(previewImageRectCenterY);
  369. parcel.writeFloat(previewImageRectLeft);
  370. parcel.writeFloat(previewImageRectTop);
  371. parcel.writeFloat(previewImageRectRight);
  372. parcel.writeFloat(previewImageRectBottom);
  373. parcel.writeFloat(scaleFactor);
  374. parcel.writeString(webUrl);
  375. parcel.writeInt(mFileInfo);
  376. parcel.writeInt(mFileType);
  377. parcel.writeString(mOrgFileNameForLogger);
  378. }
  379. }