java图像处理的方法大全
【提要】本篇《java图像处理的方法》特别为需要方法编程学习的朋友收集整理的,仅供参考。内容如下:
项目需要调整图片服务器的解决方案,这次调整使用fastdfs存储小文件,也就是图片,因为现在还没有fastdfs的版的客服端,所以理所当然把处理图片放到了java这块,使用java来处理图片并且上传到fastdfs上以下是小编为大家搜索整理的java图像处理的方法
图像剪切
对于一个已经存在的Image对象,要得到它的一个局部图像,可以使用下面的步骤:
//import .*;
//import e.*;
Image croppedImage;
ImageFilter cropFilter;
CropFilter =new CropImageFilter(25,30,75,75);//四个参数分别为图像起点坐标和宽高,即CropImageFilter(int x,int y,int width,int height),详细情况请参考API
CroppedImage= efaultToolkit()teImage(new FilteredImageSource(ource(),cropFilter));
//如果是在Component的子类中使用,可以将上面的efaultToolkit().去掉。
//FilteredImageSource是一个ImageProducer对象。
图像缩放
对于一个已经存在的Image对象,得到它的.一个缩放的Image对象可以使用Image的getScaledInstance方法:
Image scaledImage=sourceImage. getScaledInstance(100,100, E_DEFAULT);//得到一个100X100的图像
Image doubledImage=sourceImage. getScaledInstance(idth(this)*2,eight(this)*2, E_DEFAULT);//得到一个放大两倍的图像,这个程序一般在一个swing的组件中使用,而类Jcomponent实现了图像观察者接口ImageObserver,所有可以使用this。
//其它情况请参考API。
灰度变换
下面的程序使用三种方法对一个彩色图像进行灰度变换,变换的效果都不一样。一般而言,灰度变换的算法是将象素的三个颜色分量使用 R*0.3+G*0.59+B*0.11得到灰度值,然后将之赋值给红绿蓝,这样颜色取得的效果就是灰度的。另一种就是取红绿蓝三色中的最大值作为灰度值。java核心包也有一种算法,但是没有看源代码,不知道具体算法是什么样的,效果和上述不同。
/* */
/*@author:cherami */
/*/
import e.*;
public class GrayFilter extends RGBImageFilter {
int modelStyle;
public GrayFilter() {
modelStyle=_MAX;
canFilterIndexColorModel=true;
}
public GrayFilter(int style) {
modelStyle=style;
canFilterIndexColorModel=true;
}
public void setColorModel(ColorModel cm) {
if (modelStyle==_MAX) {
substituteColorModel(cm,new GrayModel(cm));
}
else if (modelStyle==_FLOAT) {
substituteColorModel(cm,new GrayModel(cm,modelStyle));
}
public int filterRGB(int x,int y,int pixel) {
return pixel;
}
}
/* */
/*@author:cherami */
/*/
import e.*;
public class GrayModel extends ColorModel {
public static final int CS_MAX=0;
public static f
inal int CS_FLOAT=1;
ColorModel sourceModel;
int modelStyle;
public GrayModel(ColorModel sourceModel) {
super(ixelSize());
ceModel=sourceModel;
modelStyle=0;
}
-
Java常用数据结构及类
Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。本文特意为大家收集整理了Java常用数据结构及类,希望大家喜欢!一、Vector类Vector类似于一个数组,但与数组相比在使用上有以下两个优点。1、使用的时候无需声明上限,随着元素的增加,Vec...
-
关于Java程序员面试中的多线程问题总结
很多核心Java面试题来源于多线程(Multi-Threading)和集合框架(CollectionsFramework),理解核心线程概念时,娴熟的实际经验是必需的。这篇文章收集了Java线程方面一些典型的问题,这些问题经常被高级工程师所问到。0、Java中多线程同步是什么?在多线程程序下,同步能控...
-
Java中运算符的使用
导语:计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。下面是java中运算符的使用,一起来学习下吧:算术运算符单目:+(取正)-(取负)++(自增1)--(自减1)双目:+-*/%(取余)三目:a>b?true:false说明:当a大于b的时候,为tru...
-
java日期时间基本操作方法
1.获得Calendar实例:Calendarc=nstance();2.定义日期/时间的格式:SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");3.把日期/时间转换成固定格式,使用SimpleDateFormat的'format()方法:Stringdatetime=at(ime());4.把字符串转换成日期/时间,...