ConvertPicUtil.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package cn.keking.utils;
  2. import com.lowagie.text.Document;
  3. import com.lowagie.text.Image;
  4. import com.lowagie.text.Rectangle;
  5. import com.lowagie.text.pdf.PdfWriter;
  6. import com.sun.media.jai.codec.ImageCodec;
  7. import com.sun.media.jai.codec.ImageEncoder;
  8. import com.sun.media.jai.codec.JPEGEncodeParam;
  9. import org.springframework.stereotype.Component;
  10. import javax.media.jai.JAI;
  11. import javax.media.jai.RenderedOp;
  12. import java.io.*;
  13. @Component
  14. public class ConvertPicUtil {
  15. /**
  16. * 图片 转 JPG。
  17. * 支持输入格式如下:BMP、GIF、FlashPix、JPEG、PNG、PMN、TIFF、WBMP
  18. * @param strInputFile 输入文件的路径和文件名
  19. * @param strOutputFile 输出文件的路径和文件名
  20. * @return
  21. */
  22. public static File convertPic2Jpg(String strInputFile, String strOutputFile) {
  23. // 读取源图片文件
  24. RenderedOp roInput = JAI.create("fileload", strInputFile);
  25. try {
  26. strOutputFile = strOutputFile.replaceAll("\\\\", "/");
  27. File fileJpgPath = new File(strOutputFile.substring(0, strOutputFile.lastIndexOf("/")));
  28. if(!fileJpgPath.exists()){
  29. fileJpgPath.mkdirs();
  30. }
  31. File fileJpg=new File(strOutputFile);
  32. OutputStream ops = new FileOutputStream(fileJpg);
  33. // 文件存储输出流
  34. JPEGEncodeParam param = new JPEGEncodeParam();
  35. ImageEncoder image = ImageCodec.createImageEncoder("JPEG", ops,
  36. param); // 指定输出格式
  37. // 解析输出流进行输出
  38. image.encode(roInput);
  39. // 关闭流
  40. ops.close();
  41. return fileJpg;
  42. } catch (FileNotFoundException e) {
  43. e.printStackTrace();
  44. } catch (Exception e) {
  45. e.printStackTrace();
  46. }
  47. return null;
  48. }
  49. /**
  50. * 将Jpg图片转换为Pdf文件
  51. * @param strJpgFile 输入的jpg的路径和文件名
  52. * @param strPdfFile 输出的pdf的路径和文件名
  53. * @return
  54. */
  55. public static File convertJpg2Pdf(String strJpgFile, String strPdfFile) {
  56. Document document = new Document();
  57. // 设置文档页边距
  58. document.setMargins(0,0,0,0);
  59. FileOutputStream fos = null;
  60. try {
  61. fos = new FileOutputStream(strPdfFile);
  62. PdfWriter.getInstance(document, fos);
  63. // 打开文档
  64. document.open();
  65. // 获取图片的宽高
  66. Image image = Image.getInstance(strJpgFile);
  67. float floatImageHeight=image.getScaledHeight();
  68. float floatImageWidth=image.getScaledWidth();
  69. // 设置页面宽高与图片一致
  70. Rectangle rectangle = new Rectangle(floatImageWidth, floatImageHeight);
  71. document.setPageSize(rectangle);
  72. // 图片居中
  73. image.setAlignment(Image.ALIGN_CENTER);
  74. //新建一页添加图片
  75. document.newPage();
  76. document.add(image);
  77. } catch (Exception ioe) {
  78. ioe.printStackTrace();
  79. return null;
  80. } finally {
  81. //关闭文档
  82. document.close();
  83. try {
  84. fos.flush();
  85. fos.close();
  86. File filePDF = new File(strPdfFile);
  87. return filePDF;
  88. } catch (IOException e) {
  89. e.printStackTrace();
  90. }
  91. }
  92. return null;
  93. }
  94. }