zoukankan      html  css  js  c++  java
  • java图片处理

    Java中进行图像I/O(即读图片和写图片,不涉及到复杂图像处理)一个类包含静态方便定位方法 ImageReaders和 ImageWriters,并进行简单的编码和解码。

    • 特别说明 imageio 文档说明支持bmp 转换的,但是实际上比不支持的,网络上找了很多,有的人说开imagebuffer缓存但是实际上没有作用, 使用opencv转换还是有问题,不知道是java的问题还是本身就不支持,这个问题
      困扰了我24小时,最后被迫无奈只能换成tiff格式.

    • 基本代码

    /*File f1 = new File("Z:\java\1.png");
    		BufferedImage image = ImageIO.read(f1);
    		File f2 = new File("Z:\java\2.tiff");
    		ImageIO.write(image, "png", f2);*///对应输入图片的格式
    
    • 参数化代码
    
    	@Test //获取输入输出图片格式
    	public void f1() {
    		String readFormats[] = ImageIO.getReaderFormatNames();
    		String writeFormats[] = ImageIO.getWriterFormatNames();
    		System.out.println(  Arrays.asList(readFormats));
    		System.out.println( Arrays.asList(writeFormats));
    	}
    	
    	@Test
    	public void f2() {
    		Iterator<ImageReader> iterator = ImageIO.getImageReadersByFormatName("png");
    	}
    	 /** 
         * 对图片裁剪,并把裁剪新图片保存 
         * @param srcPath 读取源图片路径
         * @param toPath    写入图片路径
         * @param x 剪切起始点x坐标
         * @param y 剪切起始点y坐标
         * @param width 剪切宽度
         * @param height     剪切高度
         * @param readImageFormat  读取图片格式
         * @param writeImageFormat 写入图片格式
         * @throws IOException
         */
        public void cropImage(String srcPath,String toPath,
                int x,int y,int width,int height,
                String readImageFormat,String writeImageFormat) throws IOException{   
            FileInputStream fis = null ;
            ImageInputStream iis =null ;
            try{   
                //读取图片文件
                fis = new FileInputStream(srcPath); 
                Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName(readImageFormat); 
                ImageReader reader = (ImageReader) it.next(); 
                //获取图片流 
                iis = ImageIO.createImageInputStream(fis);  
                reader.setInput(iis,true) ;
                ImageReadParam param = reader.getDefaultReadParam(); 
                //定义一个矩形
                Rectangle rect = new Rectangle(x, y, width, height); 
                //提供一个 BufferedImage,将其用作解码像素数据的目标。 
                param.setSourceRegion(rect);
                BufferedImage bi = reader.read(0,param);                
                //保存新图片 
                ImageIO.write(bi, writeImageFormat, new File(toPath));     
            }finally{
                if(fis!=null)
                    fis.close();       
                if(iis!=null)
                   iis.close(); 
            } 
        }
    	
    
  • 相关阅读:
    周末小练习
    第十二届全国大学生信息安全竞赛总结与反思
    sql注入学习心得与sqlmap使用心得
    2019“嘉韦思”杯RSA256题目wp
    斐波那契数列求解的三种方法
    二叉树的下一个节点
    替换空格
    二维数组中的查找
    不修改数组找出重复数字
    数组中重复数字
  • 原文地址:https://www.cnblogs.com/dgwblog/p/8711482.html
Copyright © 2011-2022 走看看