java中关于图片的操作

一,给图片加上生成好的二维码及文字

//zxingImage 生成好的二维码   backgroundPath 模板文件的地址
public static InputStream changeMerchantSeatQrcodeImage(BufferedImage zxingImage, String backgroundPath) {
InputStream imagein = null ;
ImageOutputStream imOut = null;
 try{
//写入图片文件
 imagein = new FileInputStream(backgroundPath);
//将图片写入缓存流中
 BufferedImage image = ImageIO.read(imagein);
//使用Graphics类进行绘图
 Graphics g = image.getGraphics();
 //设置字体(Font (字体,字体类型(加粗,斜体等),字体大小(int)注意,字体大小和图片大小的分辨率不是同一单位)
 g.setFont(new Font("方正大标宋简体",Font.BOLD,200);
 g.setColor(Color.white);//设置颜色
 //写入具体内容,以及写入位置的x和y
 g.drawString("具体内容",500,300);
//二维码图片*0.2
   BufferedImage squreImage = resizeImage(zxingImage,0.2);	 
//同上
           g.drawImage(squreImage,27,76,squreImage.getWidth(),squreImage.getHeight(), null);
       g.dispose();  
       //做一个png转jpg
JPG(BufferedImage image)
 //通过ImageIO把文件写出
 //image 需要输出的文件
 //png 输出的文件类型
 //new File("xxxx.png") 输出的文件的具体位置,也可以把输出存放在输出流中
 //例如:
 // ImageIO.write(image, "png", new ByteArrayOutputStream ());
 //然后读取流同样的效果
 ImageIO.write(image, "png", new File("xxxx.png"));//这种方式输出的图形dpi会变成默认的96下面一个方式可以自定义
//自定义dpi的大小
// JPEGCodec.createJPEGEncoder(new ByteArrayOutputStream ())也可以
//然后使用  ByteArrayOutputStream .toByteArray();在用输出流输出也可以是同样的效果
 JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(new FileOutputStream(backgroundPath));
	            JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(image);	            jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
	            jpegEncoder.setJPEGEncodeParam(jpegEncodeParam);
	            jpegEncodeParam.setQuality(0.75f, false);
	            jpegEncodeParam.setXDensity(300);
	            jpegEncodeParam.setYDensity(300);
	            jpegEncoder.encode(image, jpegEncodeParam);
 
}catch (Exception e) {
	            e.printStackTrace();
}
finally {
	            try {
	                imagein.close();
	                
	            } catch (IOException e) {
	                e.printStackTrace();
	            }
	        }
}

//做二维码缩小图或者生成二维码就算好大小
//originalImage 二维码图流
//times 所需要缩小的比例
public static BufferedImage resizeImage11(BufferedImage  originalImage, int times){
//算出缩小后的宽
	 int width = (int)(originalImage.getWidth()*times);
//算出缩小后的高度
	int height = (int)(originalImage.getHeight()*times);
  //或者直接定义大小
	  //int width =15;
	  //int  height =15;
	  //获取图像的类型
	        int tType = originalImage.getType();
	        if(0 == tType){
	            tType = 5;
	        }
	        //新建一个目标大小的图片放在缓冲区
	        BufferedImage newImage = new BufferedImage(width,height, tType);
	        //同上
	        Graphics g = newImage.getGraphics();
	     //把原来originalImage的以指定高度复制给newImage
	     //x轴y轴起都为0及全图
	        g.drawImage(originalImage, 0,0,width,height,null);
	      //销毁程序中指定的图形界面资源  方便后面其他图形的操作及程序卡死 
	        g.dispose();

	        return newImage;
	    }
public static void main(String[] args){
String imgPath = "二维码地址"; 
try {
BufferedImage image = ImageIO.read(new FileInputStream(imgPath));
changeMerchantSeatQrcodeImage(image,"样图地址");
} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}


//做png转jpg 
public   static   BufferedImage   JPG(BufferedImage image){
BufferedImage newBufferedImage = new BufferedImage(image.getWidth(),image.getHeight(), BufferedImage.TYPE_INT_RGB);
 //TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位
 		             newBufferedImage.createGraphics().drawImage(image, 0, 0, Color.WHITE, null);
return newBufferedImage ;
 		             } 		
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值