Java编程图像处理技巧

2016-02-19 14:36 9 1 收藏

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

【 tulaoshi.com - 编程语言 】


  
  下面代码中用到的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)));
  }
  

来源:http://www.tulaoshi.com/n/20160219/1607318.html

延伸阅读
在Delphi中,专门定义了一组对象和部件用以绘制图形,完成一些简单的图像功能。利用这些对象、部件的方法,可以方便地绘制各种常用图形;通过设置它们的属性,能得到不同风格的图形。另外,通过对鼠标事件的定义,可以方便的设计图形绘制程序。 本章将介绍以下内容: 1. TCanvas,TPen,TBrush,TColor对象的方法及属性; 2. ...
Java编程中的异常处理是一个很常见的话题了,几乎任何一门介绍性的Java课程都会提到异常处理。不过,我认为很多人其实没有真正掌握正确处理异常情况的方法和策略,最多也就不过了解个大概,知道概念。我想对三种不同程度和质量的Java异常处理进行了讨论,所阐述的处理异常的方式按手法的高下分为: 好,不好和恶劣三种。 同时提供了一些解决这些...
标签: Java JAVA基础
1、java数据库操作基本流程 2、几个常用的重要技巧: 可滚动、更新的记录集 批量更新 事务处理 java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 1、取得数据库连接 1)用DriverManager取数据库连接 例子: String className,url,...
[文章导读]显示文字是Java中最基本的功能,使用非常简单的方式来支持文字的显示 显示文字是Java中最基本的功能,使用非常简单的方式来支持文字的显示,只要使用类Graphics中的drawString()函数就能实现。我们来看最简单的ghq例子: //ghq.java import java.awt.*; import java.applet.*; public class ghq extends Applet { String te...
Example 1 Below is a simple Java program which can get the hostname of a computer from IP address. download now Tips 1. Compile: javac GetHost 2. Run: java GetHost 111.111.111.1(your IP or others) import java.io.*; import java.net.*; // // // GetHost.java // // public class GetHost { public static void ...

经验教程

597

收藏

46
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部