
正文
java图片反色代码 java 图片变黑白
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
JAVA实现图片的任意方向反转
package junit test;
import java awt image BufferedImage;
import java io File;
import URL;
import javax imageio ImageIO;
import java util *;
public class Test {
public static void main(String [] args)
{
try {
//本地地址或URL java图片反色代码的图片
//BufferedImage bi = ImageIO read(new URL( ));
BufferedImage bi = ImageIO read(new File( D:\\ jpg ));
//截取任意区域java图片反色代码的图片
//BufferedImage subimg = bi getSubimage( );
int width = bi getWidth();
int height = bi getHeight();
System out println( w: +width);
System out println( h: +height);
int [][]datas = new int[width][height];
int [][]datastmp = new int[width][height];
for(int i = ;i height;i++)
{
for(int j = ;jwidth;j++)
{
datas[j][i]= bi getRGB(j i);
datastmp[j][i]= bi getRGB(j i);
System out print( bi getRGB(j i)+ );
}
System out println();
}
int [][] xz = XZ(datas width height );
for(int i = ;i height;i++)
{
for(int j = ;jwidth;j++)
{
bi setRGB(j i xz[j][i]);
}
}
ImageIO write(bi JPEG new File( D:\\ jpg ));
}
/***
* 图片旋转数据处理
* @param datas
* @param width
* @param height
* @param FX 为上下反转 为左右反转
* @return
*/
public static int [][] XZ(int [][] datas int width int height int FX)
{
try {
int[][] tmps= new int [width][height];
if(FX== )
{
for(int i = a=height ;i height;i++ a )
{
for(int j = b=width ;jwidth;j++ b )
{
tmps[b][a] = datas[j][i];
}
}
}
else if (FX== )
{
for(int i = ;i height;i++)
{
for(int j = b=width ;jwidth;j++ b )
{
tmps[b][i] = datas[j][i];
}
}
}
return tmps;
} catch (Exception e) {
// TODO: handle exception
System out println( ex: +e getMessage());
return null;
}
lishixinzhi/Article/program/Java/hx/201311/25710
相关问答
Q1: 利用java实现图片翻转的代码
重载渲染控件java图片反色代码的paintComponent(Graphics
g)方法.
设java图片反色代码你当前图像实例为img,已初始化,需要旋转的角度为ang
public
void
paintComponent(Graphics
g){
super.paintCompoent(g);
Graphics2D
g2d
=
(Graphics2D)g;
g2d.rotate(-angle);
g2d.drawImage(img,0,0,this.getWidth(),this.getHeight(),null);
}
Graphics,Graphics2D
类中有对当前描绘环境进行仿射变换的方法,包括translate,scale,rotate,也可以直接设置仿射变换矩阵,利用这点就可以根据所需要的实现方式来进行描绘.
Q2: Java程序中图片的使用方法
使用图像根据需要,可以有多种方法。
如果是放在组件中,如JButton、JLabel中,这些组件需要的是Icon接口的图像,那么使用ImageIcon类来加载图像比较好,new
ImageIcon(String
filename)或new
ImageIcon(URL
location)都可以直接加载图像文件。
甚至你还可以先用IO读出byte流,也能用byte[]创建ImageIcon。还可以由已有的Image来创建。
更为高级的用法是,你还可以先创建个空的ImageIcon,然后重写paintIcon(Component,Graphics,int,int)方法实现手工绘制!
如果你是要完成图像绘制,那么使用Image或BufferedImage比较好。
Toolkit.getDefaultToolkit().getImage(String或URL)就能加载图像。
这种方法需要一个图像观察者来监视图像是否加载完成,因为图像加载是异步的。通常,你用一个swing组件就可以充当这个角色。不过少用JLabel,因为我有一个程序用JLabel做观察者CPU占用率经常90%多,有时不出界面。用JPanel或JFrame都没出过这个问题。从API文档看,应该是所有的swing可视组件都实现了观察者接口。
选了观察者后,不用刻意观察加载情况,很简单的一个方法:swing组件的while(!prepareImage(Image));就可以了。
Image接口是Graphics类绘图drawImage要用的,所以绘制时应该选这个。
BufferedImage是实现了Image接口的图像,可以直接操作像索数据!所以利用算法生成图像再绘制,或图像处理可以使用这种方法。如浮雕、反色等。
加载方法是ImageIO类的read方法。
Q3: 求Java图像处理中反色的程序
SampleModel
取样模型
Databuffer
数据缓冲区
Raster
光栅
Sample
样本
band
带
SampleModel是java
awt中的一个抽象类,它定义了一个接口,用于提取一幅图像中的像素(pixel)的样本(Sample)。
一幅图像包含了许多数据,而所有的数据是以像素为基本单位来表达的(像素的集合),其中每个像素又由若干样本来构成。
样本(Sample),是指对一幅图像取样得到的属于某个带的单体数据,
而带(band),是一副图像中的特定类型的样本的全体。
例如,1个像素可包含3个样本、分别代表红、绿、蓝这三个基色。于是就说以三基色来定义的一幅图像包含了3个带:第一个带含来自图像中的所有像素的红色样本,第二个带含所有的绿色样本,第三个带含所有的蓝色样本。
内存存放方式:像素可用不同方式来进行存储。如,把一个带的所有像素按顺序进行存放的方式、和把单个像素所含的样本组(例如三基色的三个样本)的各个样本逐组顺序存放的方式,等等。
SampleModel的子类用来指定样本的表达类型(如,是非负的8比特类型byte还是整数类型的16比特short,等),以及样本在内存的存放格式。Java
2D(tm)提供的图像处理内置API不可能支持所有的样品类型,但通常都会支持16比特无符号整数类型(0
-65535)或更低的类型,其中,有些API支持的数据类型会有很多。
1组像素可表示为1个光栅(Raster。例如一个扫描行)。光栅含1个DataBuffer和1个SampleModel。使用SampleModel可以对DataBuffer中的样本进行存取,有些还可能提供机器级别的信息,帮助编程者直接操作DataBuffer中的样品和像素。
SampleModel处理图像通常是后退法。高效的编程是,把SampleModel
转换(cast)到适当的子类,从中提取出直接操作DataBuffer中的像素所需的信息。
请参考
Q4: java程序将彩色png图片转为黑白的
帮你搜了一段网上流行的代码:
灰度变换
下面的程序使用三种方法对一个彩色图像进行灰度变换,变换的效果都不一样。一般而言,灰度变换的算法是将象素的三个颜色分量使用R*0.3+G*0.59+B*0.11得到灰度值,然后将之赋值给红绿蓝,这样颜色取得的效果就是灰度的。另一种就是取红绿蓝三色中的最大值作为灰度值。java核心包也有一种算法,但是没有看源代码,不知道具体算法是什么样的,效果和上述不同。
/* GrayFilter.java*/
/*@author:cherami */
/*email:cherami@163.net*/
import java.awt.image.*;
public class GrayFilter extends RGBImageFilter {
int modelStyle;
public GrayFilter() {
modelStyle=GrayModel.CS_MAX;
canFilterIndexColorModel=true;
}
public GrayFilter(int style) {
modelStyle=style;
canFilterIndexColorModel=true;
}
public void setColorModel(ColorModel cm) {
if (modelStyle==GrayModel
else if (modelStyle==GrayModel
}
public int filterRGB(int x,int y,int pixel) {
return pixel;
}
}
/* GrayModel.java*/
/*@author:cherami */
/*email:cherami@163.net*/
import java.awt.image.*;
public class GrayModel extends ColorModel {
public static final int CS_MAX=0;
public static final int CS_FLOAT=1;
ColorModel sourceModel;
int modelStyle;
public GrayModel(ColorModel sourceModel) {
super(sourceModel.getPixelSize());
this.sourceModel=sourceModel;
modelStyle=0;
}
public GrayModel(ColorModel sourceModel,int style) {
super(sourceModel.getPixelSize());
this.sourceModel=sourceModel;
modelStyle=style;
}
public void setGrayStyle(int style) {
modelStyle=style;
}
protected int getGrayLevel(int pixel) {
if (modelStyle==CS_MAX) {
return Math.max(sourceModel.getRed(pixel),Math.max(sourceModel.getGreen(pixel),sourceModel.getBlue(pixel)));
}
else if (modelStyle==CS_FLOAT){
return (int)(sourceModel.getRed(pixel)*0.3+sourceModel.getGreen(pixel)*0.59+sourceModel.getBlue(pixel)*0.11);
}
else {
return 0;
}
}
public int getAlpha(int pixel) {
return sourceModel.getAlpha(pixel);
}
public int getRed(int pixel) {
return getGrayLevel(pixel);
}
public int getGreen(int pixel) {
return getGrayLevel(pixel);
}
public int getBlue(int pixel) {
return getGrayLevel(pixel);
}
public int getRGB(int pixel) {
int gray=getGrayLevel(pixel);
return (getAlpha(pixel)24)+(gray16)+(gray8)+gray;
}
}
java图片反色代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 图片变黑白、java图片反色代码的信息别忘了在本站进行查找喔。






