Java编程图像处理技巧

z张薇vv

z张薇vv

2016-02-19 14:36

下面图老师小编要向大家介绍下Java编程图像处理技巧,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

  
  下面代码中用到的sourceImage是一个已经存在的Image对象
  
  图像剪切
  
  对于一个已经存在的Image对象,要得到它的一个局部图像,可以使用下面的步骤:
  
  //import Java.awt.*;
  //import java.awt.image.*;
  Image croppedImage;
  ImageFilter cropFilter;
  CropFilter =new CropImageFilter(25,30,75,75);//四个参数分别为图像起点坐标和宽高,即CropImageFilter(int x,int y,int width,int height),具体情况请参考API
  CroppedImage= Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(sourceImage.getSource(),cropFilter));
  //假如是在Component的子类中使用,可以将上面的Toolkit.getDefaultToolkit().去掉。
  //FilteredImageSource是一个ImageProdUCer对象。
  图像缩放
  
  对于一个已经存在的Image对象,得到它的一个缩放的Image对象可以使用Image的getScaledInstance方法:
  
  Image scaledImage=sourceImage. getScaledInstance(100,100, Image.SCALE_DEFAULT);//得到一个100X100的图像
  Image doubledImage=sourceImage. getScaledInstance(sourceImage.getWidth(this)*2,sourceImage.getHeight(this)*2, Image.SCALE_DEFAULT);//得到一个放大两倍的图像,这个程序一般在一个swing的组件中使用,而类Jcomponent实现了图像观察者接口ImageObserver,所有可以使用this。
  //其它情况请参考API。
  
  灰度变换
  
  下面的程序使用三种方法对一个彩色图像进行灰度变换,变换的效果都不一样。一般而言,灰度变换的算法是将象素的三个颜色分量使用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.CS_MAX) {
  substituteColorModel(cm,new GrayModel(cm));
  }
  else if (modelStyle==GrayModel.CS_FLOAT) {
  substituteColorModel(cm,new GrayModel(cm,modelStyle));
  }
  }
  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)));
  }
  
展开更多 50%)
分享

猜你喜欢

Java编程图像处理技巧

编程语言 网络编程
Java编程图像处理技巧

Java图像处理技巧四则

编程语言 网络编程
Java图像处理技巧四则

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java Applet编程显示图像

编程语言 网络编程
Java Applet编程显示图像

Java编程中异常处理的优劣之道

编程语言 网络编程
Java编程中异常处理的优劣之道

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

10条关于图像处理的技巧

平面设计 海报设计 广告设计 画报设计 签名设计 服装设计 名片设计 画册设计 版式设计 商标设计
10条关于图像处理的技巧

Java编程技巧(信号量,管道)

编程语言 网络编程
Java编程技巧(信号量,管道)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

设计模式之State

设计模式之State

jQuery解决iframe高度自适应代码

jQuery解决iframe高度自适应代码
下拉加载更多内容 ↓