本文目录一览:
- 1、JAVA关于图像处理问题
- 2、java直接保存的图片不清楚,请问需要如何处理
- 3、java图片处理
- 4、用java处理图片,使图片像素和长宽成比例变小,请各位高手帮忙解决一下,急
- 5、如何用Java对图片进行马赛克处理?
JAVA关于图像处理问题
读取控制台输入的路径
判断文件是否存在
Y: - 2
N:在命令行输出"Sorry, I cannot find that file."并退出
读取图片
分析图片像素,按要求将多余的像素截掉
创建一个新图片,像素为原图片的1/4大小
合并像素,将4个像素通过给定的条件计算RGB值合并为1个像素
输出图片,路径为原始图片路径,文件名按要求做处理
不知仁兄的水平在啥程度,整个流程如上列出,哪一步不明确的可以追问
java直接保存的图片不清楚,请问需要如何处理
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
param.setQuality(1f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(image);
out.close();
public void setQuality(float quality, boolean forceBaseline)
quality取值在 1.0 到 0.0 之间
JDK6 里面是可以使用的,JDK7就看着办吧
java图片处理
下一个图像处理库,简单的,用java语言可以直接调用的,SimpleImage
如果有复杂的需求,用jni调用opencv(c++的dll形式,必须用jni才能调用)
用java处理图片,使图片像素和长宽成比例变小,请各位高手帮忙解决一下,急
90 * 90的图片
应该是分成9个10 * 10的吧
static Image createImage(Image image, int x, int y, int width, int height, int transform)
Image类里面自带方法创建分割图片
可以这样创建:
Image imgBase = Image.createImage("/*.png");
Image img[] = new Image[9];
for(int i = 0; i 9; i++)
{
img[i] = Image.createImage(imgBase, (i % 3) * 10, (i / 3) * 10, 10, 10, Sprite.TRANS_NONE); //参数分别是:源图片,截取的X坐标,Y坐标,宽,高,翻转类型
}
这样就可以了
当然以上代码需要放在try里面
如果想分成其他的小图片,可以按照需要变动坐标和宽高等参数
如何用Java对图片进行马赛克处理?
把图片压缩成32*32这个不难,java有这样的类提供了方法
BufferedImage bi = new BufferedImage(w * 2 / scale, h * 2 / scale, bm.getType());//画布大小
Graphics2D g2 = bi.createGraphics();
g2.drawImage(bm, 0, 0, w * 2 / scale, h * 2 / scale, null); //绘制缩小后的图
// 转换成JPEG图像格式
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
JPEGEncodeParam jpeg = encoder.getDefaultJPEGEncodeParam(bi);
jpeg.setQuality(1f, false);
encoder.setJPEGEncodeParam(jpeg);
encoder.encode(bi);
byte[] data = bos.toByteArray();
但是要减少颜色数的话,这个比较麻烦,这个首先需要知道图片中
颜色空间,比如16色,32色等,你需要读取图片文件中的内容,然后根据图片头的信息
读取每个像素的RGB值(如果是RGB空间),并对每一个像素进行 颜色 设置