zoukankan      html  css  js  c++  java
  • 图像与数组转换

    package com.prj.controller;

    import java.awt.image.BufferedImage;
    import java.io.File;

    import javax.imageio.ImageIO;

    public class ImageWithArray {
     
     public static void main(String []args){
      //读取图片到BufferImage
      BufferedImage bf = readImage("D:\easy-shopping\WebContent\upload\image\ad_login.jpg");//读取绝对路径+文件名
      //Image转化二维数组
      int[][] rgbArray1 = convertImageToArray(bf);
      //输出图片到指定文件
      writeImageFromArray("D:\IDEA\2.jpg","jpg",rgbArray1);//输出绝对路径+文件名
      
      System.out.println("图片输出完毕!");
     }
     private static BufferedImage readImage(String imageFile) {
      File file= new File(imageFile);
      BufferedImage bf = null;
      try{
       bf =ImageIO.read(file);
      }catch (Exception e) {
       e.printStackTrace();
      }
      return bf;
     }
     
     private static int[][] convertImageToArray(BufferedImage bf) {
      // 获取图片的宽度和高度
      int width = bf.getWidth();
      int height = bf.getHeight();
      //将图片sRGB数据写入一维数组中
      int [] data = new int[width*height];
      bf.getRGB(0, 0, width, height, data, 0, width);
      //将一维数组转换为二维数组
      int[][] rgbArray = new int[height][width];
      for(int i=0;i<height;i++)
      for(int j=0;j<width;j++)
       rgbArray[i][j] = data[i*width+j];
      return rgbArray;
     }

     private static void writeImageFromArray(String imageFile, String type,int[][] rgbArray) {
      //获取数组宽度和高度
      int width = rgbArray[0].length;
      int height = rgbArray.length;
      //将二维数组转换一维数组
      int [] data = new int[width*height];
      for(int i=0;i<height;i++)
      for(int j=0;j<height;j++)
       data[i*width+j]=rgbArray[i][j];
      //将数据写入BufferImage
      BufferedImage bf = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
      bf.setRGB(0, 0, width, height, data, 0, width);
      //输出图片
      try{
       File file = new File(imageFile);
       ImageIO.write((BufferedImage)bf, type, file);
      }catch (Exception e) {
       e.printStackTrace();
      }
     }
     
    }

    作者:KeerDi —— 北方的后生

    出处:http://www.cnblogs.com/keerdi/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Visual Studio 2013 的 Xamarin 安装教程
    BeesCMS后台登录SQL报错注入
    Linux系统更改IP地址
    SSRF漏洞
    代码执行漏洞
    Python零碎的知识(持续更新)
    iptables
    WAF学习_(2)安装
    WAF学习_(1)Lua基础
    SSL协议
  • 原文地址:https://www.cnblogs.com/123hll/p/9066878.html
Copyright © 2011-2022 走看看