zoukankan      html  css  js  c++  java
  • Java实现emf图片字节流转png(jpg)图片字节流

    private byte[] emfToPng(InputStream is){
    // InputStream inputStream=null;
    byte[] by=null;
    EMFInputStream emf = null; 
    EMFRenderer emfRenderer = null; 
    //创建储存图片二进制流的输出流
    ByteArrayOutputStream baos = null;
    //创建ImageOutputStream流
    ImageOutputStream imageOutputStream = null;
    try { 
    emf = new EMFInputStream(is, EMFInputStream.DEFAULT_VERSION); 
    emfRenderer = new EMFRenderer(emf); 
    
    final int width = (int)emf.readHeader().getBounds().getWidth(); 
    final int height = (int)emf.readHeader().getBounds().getHeight(); 
    final BufferedImage result = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 
    Graphics2D g2 = (Graphics2D)result.createGraphics(); 
    emfRenderer.paint(g2); 
    
    //创建储存图片二进制流的输出流
    baos = new ByteArrayOutputStream();
    //创建ImageOutputStream流
    imageOutputStream = ImageIO.createImageOutputStream(baos);
    //将二进制数据写进ByteArrayOutputStream
    ImageIO.write(result, "png", imageOutputStream);
    //inputStream = new ByteArrayInputStream(baos.toByteArray());
    by=baos.toByteArray();
    /*JPanel resultPanel = new JPanel() { 
    
    private static final long serialVersionUID = 1L; 
    
    public void paintComponent(Graphics g) { 
    super.paintChildren(g); 
    Graphics2D g2 = (Graphics2D)g; 
    g2.drawImage(result, 0, 0, width, height,null); 
    g2.dispose();
    } 
    };
    
    JFrame ui = new JFrame("EMF Reader"); 
    ui.getContentPane().setLayout(new BorderLayout()); 
    ui.getContentPane().add(resultPanel, BorderLayout.CENTER); 
    ui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    ui.setSize(new Dimension(width, height)); 
    ui.setVisible(true);*/
    } catch (FileNotFoundException e) { 
    e.printStackTrace(); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } finally{
    try {
    if(imageOutputStream!=null){
    imageOutputStream.close();
    }
    if(baos!=null){
    baos.close();
    }
    if(emfRenderer!=null){
    emfRenderer.closeFigure();
    }
    if(emf!=null){
    emf.close(); 
    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    
    }
    return by;
    }
  • 相关阅读:
    由asp的一个错误,看语言的不同:asp & java
    chrome 显示图片遇到的问题,与 淘宝图片服务器 缓存 有关系
    asp 调用 vb(activex dll) ,参数传递(传引用)需要注意
    asp <----> vb(com,dll) <---> c 来回的调用,生命在于折腾
    HTTP/1.1 100 Continue
    java 线程栈 & java.lang.StackOverflowError
    硬盘分区的意义
    硬盘性能 & 文件碎片的一些思考
    Java并发——ReentrantLock类源码阅读
    使用Windows的NAT功能
  • 原文地址:https://www.cnblogs.com/cleverbo/p/6170577.html
Copyright © 2011-2022 走看看