java中图像与数组转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中图像与数组转换相关的知识,希望对你有一定的参考价值。
请问怎么用java完成这两个操作:
1.我有一张PNG格式的黑白图像,我想把这个图像导入到java程序中,然后把这个图像变成一个二维的数组,数组每个元素表示灰度。
2.把一个二维数组每个元素表示灰度,转换成图片保存在硬盘里。
按照你的要求编写的Java程序如下:( 要注意的地方见语句后面的注释)
import java.awt.image.BufferedImage;import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageWithArray
public static void main(String[] args)
// 读取图片到BufferedImage
BufferedImage bf = readImage("c:\\\\tmp\\\\6\\\\female.png");//这里写你要读取的绝对路径+文件名
// 将图片转换为二维数组
int[][] rgbArray1 = convertImageToArray(bf);
// 输出图片到指定文件
writeImageFromArray("c:\\\\tmp\\\\2.png", "png", rgbArray1);//这里写你要输出的绝对路径+文件名
System.out.println("图片输出完毕!");
public static BufferedImage readImage(String imageFile)
File file = new File(imageFile);
BufferedImage bf = null;
try
bf = ImageIO.read(file);
catch (IOException e)
e.printStackTrace();
return bf;
public 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;
public 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 < width; j++)
data[i*width + j] = rgbArray[i][j];
// 将数据写入BufferedImage
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((RenderedImage)bf, type, file);
catch (IOException e)
e.printStackTrace();
运行结果:
图片输出完毕!
原图:
输出图:
参考技术A java.awt.image.BufferedImage如果想快,最好是直接从文件格式入手。。。。。。。。。。。。。。
如何获取相册中图像的图像文件名和标签?
【中文标题】如何获取相册中图像的图像文件名和标签?【英文标题】:How to get Image Filename and Tag of images in photos album? 【发布时间】:2012-06-11 04:28:01 【问题描述】:有没有办法获取相册中图片的图片文件名和标签?
我正在使用ALAssetsLibrary
,但仍在抓挠......
【问题讨论】:
【参考方案1】:您可以将ALAssetLibrary
对象复制到一个数组中(或者在本地数据库中更好)。使ALAsset
的对象显示并给它们标记(取决于数组索引)。
否则,如果您仍希望继续使用图像名称。您可以从UIImagePickerControllerReferenceURL
获取它们。尝试substring函数获取名称(提示:大多在&ext
之前,也可以获取文件的扩展名。)
【讨论】:
【参考方案2】:ALAssetRepresentation *AssetRepObj = [AssetObj defaultRepresentation];
NSString *FileName = [AssetRepObj filename];
【讨论】:
以上是关于java中图像与数组转换的主要内容,如果未能解决你的问题,请参考以下文章