zoukankan      html  css  js  c++  java
  • java根据图片和文字生成自定义图片

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.image.BufferedImage;
    import java.io.BufferedOutputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    
    public class ChartGraphics {
    	private BufferedImage image;
    	private int imageWidth = 300;  //图片的宽度
    	private int imageHeight = 500; //图片的高度
    	//生成图片文件
    	@SuppressWarnings("restriction")
    	public void createImage(String fileLocation) {
    		BufferedOutputStream bos = null;
    		if(image != null){
    			try {
    				FileOutputStream fos = new FileOutputStream(fileLocation);
    				bos = new BufferedOutputStream(fos);
    				
    				JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
    				encoder.encode(image);
    				bos.close();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}finally{
    				if(bos!=null){//关闭输出流
    					try {
    						bos.close();
    					} catch (IOException e) {
    						e.printStackTrace();
    					}
    				}
    			}
    		}
    	}
    
    	public void graphicsGeneration(String name, String id, String classname, String imgurl) {
    		int H_title = 30;     //头部高度
    		int H_mainPic = 200;  //轮播广告高度
    		int H_tip = 60;  //上网提示框高度
    		int H_btn = 25;  //按钮栏的高度
    		int tip_2_top = (H_title+H_mainPic);
    		int btns_2_top = tip_2_top+H_tip+20;
    		int btn1_2_top = btns_2_top+10;
    		int btn2_2_top = btn1_2_top+H_btn;
    		int shops_2_top = btn2_2_top+H_btn+20;
    		int W_btn = 280;  //按钮栏的宽度
    		
    		image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
    		//设置图片的背景色
    		Graphics2D main = image.createGraphics();
    		main.setColor(Color.white);
    		main.fillRect(0, 0, imageWidth, imageHeight);
    		
    		//***********************页面头部
    		Graphics title = image.createGraphics();
    		//设置区域颜色
    		title.setColor(new Color(143, 0, 0));
    		//填充区域并确定区域大小位置
    		title.fillRect(0, 0, imageWidth, H_title);
    		//设置字体颜色,先设置颜色,再填充内容
    		title.setColor(Color.white);
    		//设置字体
    		Font titleFont = new Font("宋体", Font.BOLD, 14); 
    		title.setFont(titleFont);
    		title.drawString("my head", 100, (H_title)/2+5);
    
    		//***********************插入中间广告图
    		Graphics mainPic = image.getGraphics();
    		BufferedImage bimg = null;
    		try {
    		   bimg = javax.imageio.ImageIO.read(new java.io.File(imgurl));
    		} catch (Exception e) {}
    	
    		if(bimg!=null){
    			mainPic.drawImage(bimg, 0, H_title, imageWidth, H_mainPic, null);
    			mainPic.dispose();
    		}
    		//***********************设置下面的提示框
    		
    		Graphics2D tip = image.createGraphics();
    		//设置区域颜色
    		tip.setColor(new Color(255, 120, 89));
    		//填充区域并确定区域大小位置
    		tip.fillRect(0, tip_2_top, imageWidth, H_tip);
    		//设置字体颜色,先设置颜色,再填充内容
    		tip.setColor(Color.white);
    		//设置字体
    		Font tipFont = new Font("宋体", Font.PLAIN, 14); 
    		tip.setFont(tipFont);
    		tip.drawString("登录成功,本次认证时间1小时", 60, tip_2_top+(H_tip)/2-10);
    		tip.drawString("正在返回商家主页", 100, tip_2_top+(H_tip)/2+10);
    		
    		
    		
    		//***********************设置下面的按钮块
    		//设置字体颜色,先设置颜色,再填充内容
    		tip.setColor(Color.black);
    		tip.drawString("您可以选择的操作:", 20, btns_2_top);
    		tip.drawString("下面的小图标:", 20, shops_2_top);
    		//***********************按钮
    		Font btnFont = new Font("宋体", Font.BOLD, 14); 
    		Graphics2D btn1 = image.createGraphics();
    		btn1.setColor(new Color(41,192 , 50));//#29C65A
    		btn1.fillRect(10, btn1_2_top, W_btn, H_btn);
    		btn1.setColor(Color.BLACK);
    		btn1.drawRect(10, btn1_2_top, W_btn, H_btn);
    		//btn1 文本
    		btn1.setColor(Color.white);
    		btn1.setFont(btnFont);
    		btn1.drawString("单击我啊", 120, btn1_2_top+(H_btn/2)+5);
    		
    		Graphics2D btn2 = image.createGraphics();
    		btn2.setColor(new Color(141,120 , 22));//#29C65A
    		btn2.fillRect(10, btn2_2_top, W_btn, H_btn);
    		btn2.setColor(Color.BLACK);
    		btn2.drawRect(10, btn2_2_top, W_btn, H_btn);
    		//btn2文本
    		btn2.setColor(Color.white);
    		btn2.setFont(btnFont);
    		btn2.drawString("单击我啊", 120, btn2_2_top+(H_btn/2)+5);
    	
    		createImage("c:\hehe.jpg");
    		
    	}
    
    	public static void main(String[] args) {
    		ChartGraphics cg = new ChartGraphics();
    		try {
    			cg.graphicsGeneration("ewew", "1", "12", "E:\work_folder\picture\big_pic\1.jpg");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    

      

  • 相关阅读:
    多线程之旅:避免死锁——简单的锁分级(锁排序)
    和我一起来学iOS(三)UIView及其子类(上)
    谈谈.NET中常见的内存泄露问题——GC、委托事件和弱引用
    和我一起来学iOS(二)iOS中的一些约定、模式与三种回调机制
    多线程之旅六——异步编程模式,自己实现IAsyncResult
    详解JavaScript中的函数与闭包
    和我一起来学iOS(一)ObjectC的语法
    浅谈SQL SERVER中的物理联接算法
    多线程之旅之三——Windows内核对象同步机制
    深入 聚集索引与非聚集索引(一)
  • 原文地址:https://www.cnblogs.com/qianna-daisy/p/4572221.html
Copyright © 2011-2022 走看看