Java获取图片像素点数组数据

news/2024/11/16 13:26:31/

方式一:

//方式一:通过getRGB()方式获得像素矩阵
public static void getPicArrayData(String path){try{BufferedImage bimg = ImageIO.read(new File(path));int [][] data = new int[bimg.getWidth()][bimg.getHeight()];for(int i=0;i<bimg.getWidth();i++){for(int j=0;j<bimg.getHeight();j++){data[i][j]=bimg.getRGB(i,j);//输出一列数据比对if(i==0){String format = String.format("%x", data[i][j]);System.out.println(format);}}}}catch (IOException e){e.printStackTrace();}
}

方式二:

private static int[][] convertTo2DWithoutUsingGetRGB(String path) throws IOException {BufferedImage image = ImageIO.read(new File(path));final byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();final int width = image.getWidth();final int height = image.getHeight();final boolean hasAlphaChannel = image.getAlphaRaster() != null;int[][] result = new int[height][width];if (hasAlphaChannel) {final int pixelLength = 4;for (int pixel = 0, row = 0, col = 0; pixel < pixels.length; pixel += pixelLength) {int argb = 0;argb += (((int) pixels[pixel] & 0xff) << 24); // alphaargb += ((int) pixels[pixel + 1] & 0xff); // blueargb += (((int) pixels[pixel + 2] & 0xff) << 8); // greenargb += (((int) pixels[pixel + 3] & 0xff) << 16); // redresult[row][col] = argb;col++;if (col == width) {col = 0;row++;}}} else {final int pixelLength = 3;for (int pixel = 0, row = 0, col = 0; pixel < pixels.length; pixel += pixelLength) {int argb = 0;argb += -16777216; // 255 alphaargb += ((int) pixels[pixel] & 0xff); // blueargb += (((int) pixels[pixel + 1] & 0xff) << 8); // greenargb += (((int) pixels[pixel + 2] & 0xff) << 16); // redresult[row][col] = argb;col++;if (col == width) {col = 0;row++;}}}return result;
}

测试:

public static void main(String[] args) throws IOException {//方式一//getPicArrayData("C:\\Users\\yanni\\Desktop\\企鹅.jpg");//方式二int[][] ints = convertTo2DWithoutUsingGetRGB("C:\\\\Users\\\\yanni\\\\Desktop\\\\企鹅.jpg");for (int i=0;i<ints.length;i++){for (int j=0;j<ints[i].length;j++){//只打印一列数据if (i==0){String format = String.format("%x", ints[i][j]);System.out.println(format);}}}
}

听说第二种方式的性能高出第一种90%,性能更优。

参考:https://www.itranslater.com/qa/details/2325735804238300160


http://www.ppmy.cn/news/788625.html

相关文章

Vue——如何获取动态图片地址

问题 当我们在Vue页面显示当前登录用户的头像时&#xff0c;该如何加载后端传过来的动态图片地址呢&#xff1f; 这时是固定地址&#xff0c;第一时间我们想到直接在src前加:&#xff0c;使用vue的双向数据绑定即可&#xff0c;但是试了多次没有效果&#xff0c;原来要加requ…

根据ip获取地址

php 根据ip获取地址 js方法获取用户的 ip 和 地址 获取用户的来源&#xff1a;$_SERVER[‘HTTP_REFERER’] 获取用户的 IP&#xff1a;$ip $_SERVER[“REMOTE_ADDR”]; 获取用户的地址&#xff1a; 1 > 使用淘宝API接口 function getCity(KaTeX parse error: Expecte…

js通过图片url获取图片base64编码

方法1&#xff1a;直接返回图片编码 参数url&#xff1a;图片的路径 &#xff1b;参数imgType&#xff1a;图片类型默认image/png&#xff1b;方法返回值&#xff1a;图片base64编码 function getBase64ImageUrl(url, imgType) {if(!imgType){imgType"image/png";}…

vue 组件中图片地址,图片获取

前提&#xff1a;在组件中使用引用图片&#xff0c;用于<img src> 或者 背景图片background; 当我们利用vue-cli 搭建好项目的框架&#xff0c;开始高高兴兴开发组件的时候&#xff0c;有的时候想加一张图片&#xff0c;或者 在样式中加个背景&#xff0c;会发现&…

vue从数据库获取图片地址,为什么图片地址为变量时找不到图片?

vue展示以变量地址的文件 vue新手 刚开始学习vue的同学&#xff0c;可能会遇到一个问题&#xff0c;为什么当图片的地址为一个变量的时候&#xff0c;图片就找不到了呢&#xff1f; 接下来我就讲述一下我的解决方法&#xff0c;及思路。 首先&#xff0c;我们打开浏览器&am…

Android根据图片路径获取图片名字

public static String getPicNameFromPath(String picturePath){String temp[] picturePath.replaceAll("\\\\","/").split("/");String fileName "";if(temp.length > 1){fileName temp[temp.length - 1];}return fileName;}

oss 私有云访问 获取临时图片地址

oss私有bucket 访问&#xff0c;当然公有bucket可以直接访问&#xff0c;私有可以获取临时访问地址 先配置一些参数 记得maven引入oss SDK <!--Add oss--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artif…

根据图片的url获取图片的宽高

1. 代码实现 let image new Image() image.src this.imgUrl // imgUrl&#xff1a;图片的地址 console.log(image.width)2. Image() 1&#xff09;描述 Image() 函数将会创建一个新的 HTMLImageElement 实例。 它的功能等价于 document.createElement(img) 2&#xff09…