zoukankan      html  css  js  c++  java
  • 图片打水印 缩放 和一个输入流的转换

    图片打水印和缩放:

     public final static BufferedImage[] pressImage(InputStream srcImg, String waterImg,float alpha) throws IOException {
        	
        	 //File file = new File(targetImg);
            Image image = ImageIO.read(srcImg);
            int width = image.getWidth(null);
            int height = image.getHeight(null);
            BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            Graphics2D g = bufferedImage.createGraphics();
            g.drawImage(image, 0, 0, width, height, null);
        
            Image waterImage = ImageIO.read(new File(waterImg));    // 水印文件
            
            int width_1 = waterImage.getWidth(null);
            int height_1 = waterImage.getHeight(null);
            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
            
            int div=(int) (0.1*width_1);
              
            for(int y=0,row=0;y<height;y+=height_1+div,row++)
            {
            	int x=0;
            	       	
                for(;x<width;x+=width_1+div)
                {              	
                	g.drawImage(waterImage, x, y, width_1, height_1, null); // 水印文件结束	                	
                }
            }             
            
            g.dispose();
            
            BufferedImage bufferedImage2=Thumbnails.of(bufferedImage).size(100, 100).asBufferedImage();
            
           
          
           return new BufferedImage[]{bufferedImage,bufferedImage2};
        	
        }

    图片的缩放使用了Thumbnails这个工具,(事实上它也能够用来打水印的,只是我还没有研究)

    jar 包或者maven 请自行搜索

    须要特别注意的是 Thumbnails 默认是依照等比例进行缩放的而且它的缩放规则是:

    如果 把图片所放到 200*300

    * 若图片横比200小。高比300小。不变
    * 若图片横比200小,高比300大。高缩小到300,图片比例不变
    * 若图片横比200大,高比300小。横缩小到200。图片比例不变
    * 若图片横比200大,高比300大。图片按比例缩小,横为200或高为300

    bufferInage转换 inputSteam

    private InputStream getInputstreamFromBufferedImage(BufferedImage img) throws IOException{
    		 	ByteArrayOutputStream bs =new ByteArrayOutputStream();
    		 	ImageOutputStream imOut =ImageIO.createImageOutputStream(bs);
    	        ImageIO.write(img,"jpg",imOut); //scaledImage1为BufferedImage,jpg为图像的类型
    	        
    	        InputStream is =new ByteArrayInputStream(bs.toByteArray());
    	        return is;
    		
    	}



    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    webform--常用的控件
    .net嵌入c#代码(投票练习)
    webform之session传值(临时数据的存储)与扩展属性 --(购物车练习)
    ASP.NET aspx页面中 写C#脚本; ASP.NET 指令(<%@%>);
    LinQ操作
    什么是C# Lambda表达式?形如:p=>p.abc
    winform基础
    3D计算机图形学读书笔记—Wat版本
    计算机图形学的领域与分类
    NetBeans中文乱码解决办法
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4842582.html
Copyright © 2011-2022 走看看