zoukankan      html  css  js  c++  java
  • Java绘制图片生成图片文件进行预览

    Java绘制图片并实现打印前生成图片文件进行预览, 适用于开发阶段. 如果要使用界面完成预览,请另找资源.
    这里用这个功能主要是用于结果预览,因为如果使用打印来进行结果验证,会浪费大量的纸张.

    Java代码:

    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.Rectangle;
    import java.awt.geom.AffineTransform;
    import java.awt.image.BufferedImage;
    import java.awt.print.PageFormat;
    import java.awt.print.Printable;
    import java.awt.print.PrinterException;
    import java.awt.print.PrinterJob;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Date;

    import javax.imageio.ImageIO;

    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGEncodeParam;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    import com.synnex.reception.util.PLBarCode39;
    import com.synnex.reception.vo.VisitInfoVo;

    public class PrintTest {

        public static void main(String[] args) {
            String barCode = "201408210001" ;
            String dateStr = "2014/08/25 23:59:59";
            String name = "Christopher Adam Hernandez Sotelo";
            String visitorCompany = "CHINA Chengdu";
            String employeeName = "Marquisha Ardell Eddington-Williams";
            
            int zoom = 6;
            BufferedImage resultImage = null;
            BufferedImage bufferedImage = new BufferedImage(216*zoom,144*zoom,BufferedImage.TYPE_INT_RGB);
            Graphics g = bufferedImage.getGraphics();
    //        g.draw3DRect(0, 0, 216, 144, true);
            g.setColor(Color.WHITE);
            g.fillRect(0, 0, 216*zoom, 144*zoom);
            g.setColor(Color.BLACK);
            
            Image image;
            try {
                image = ImageIO.read(PrintTest.class.getClassLoader().getResource("logo.bmp").openStream());
                if (image != null) {
                    g.drawImage(image, 6*zoom, 6*zoom, 60*zoom, 24*zoom, null);
                }
                g.setFont(new Font("Arial", Font.BOLD, 14*zoom));
                g.drawString("VISITOR",100*zoom, 24*zoom);
                
                g.setFont(new Font("Arial", Font.BOLD, 10*zoom));
                g.drawString("Name:",61*zoom, 42*zoom);
                g.drawString("Entry Time:", 37*zoom,63*zoom);
                g.drawString("Company Name:", 12*zoom,80*zoom);
                g.drawString("Employee Name:", 10*zoom,97*zoom);
                
                g.setFont(new Font("Arial", Font.PLAIN, 8*zoom));
                
                g.drawString(name,92*zoom, 42*zoom);
                g.drawString(dateStr, 92*zoom,63*zoom);
                g.drawString(visitorCompany, 92*zoom,80*zoom);
                g.drawString(employeeName, 92*zoom,97*zoom);
                
                g.drawImage(generateBarcodeImage(barCode), 40*zoom, 112*zoom, 152*zoom, 30*zoom, null);
                g.dispose();
                
                resultImage = bufferedImage;//rotate(bufferedImage, 360);
                // encode: com.sun.image.codec.jpeg
                BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File("C:\test.jpg")));
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(resultImage);
                param.setQuality(1.0f, false);
                encoder.setJPEGEncodeParam(param);
                try {
                    encoder.encode(resultImage);
                }catch(IOException ioe) {
                    ioe.printStackTrace();
                }

            }catch(Exception e){
                e.printStackTrace();
            }
            
            //
    //        print(resultImage);
        }
    }

    上面代码主要是先绘制自己要产生的图片, 然后将图片输出到文件, 手动打开文件即可查看结果. 其中如下代码为导出图片到磁盘:
    Java代码:

    // encode: com.sun.image.codec.jpeg
    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File("C:\test.jpg")));
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(resultImage);
    param.setQuality(1.0f, false);
    encoder.setJPEGEncodeParam(param);
     try {
           encoder.encode(resultImage);
     }catch(IOException ioe) {
           ioe.printStackTrace();
    }

  • 相关阅读:
    60.django session缓存配置
    Jmeter学习笔记-Jmeter目录文件
    Jmeter用户手册目录
    Jmeter学习笔记-jmeter执行结束报错:The JVM should have exitted but did not
    PPT-分割图片
    bug记录-权限问题,比如说默认搜索条件为子系统,则在该子系统下面的接口模版,在搜索条件下也应该有权限的限制
    bug记录-弹出框,刚配置的时候记录少,当记录过多时,容易出现高度过高,所以要对高度进行限制,以及设置滚动条
    Jmeter学习笔记-20181224安装软件路径及linux安装方法
    bug记录-列表头部缺失,点开页面,列表头部存在,然后点击搜索后,某个枚举没有值,搜出来没有列表头部,换成其他有值的列表头部,列表头部不显示了
    视频录制与剪辑备忘记录
  • 原文地址:https://www.cnblogs.com/huyayuan1/p/4668975.html
Copyright © 2011-2022 走看看