Java繪製圖片產生圖片檔案進行預覽

來源:互聯網
上載者:User

標籤:

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();
}

Java繪製圖片產生圖片檔案進行預覽

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.