十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Java图像处理技巧四则
武川ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
下面代码中用到的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
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;
}
}
如果你有自己的算法或者想取得特殊的效果,你可以修改类GrayModel的方法getGrayLevel()。
色彩变换
根据上面的原理,我们也可以实现色彩变换,这样的效果就很多了。下面是一个反转变换的例子:
/* ReverseColorModel.java*/
/*@author:cherami */
/*email:cherami@163.net*/
import java.awt.image.*;
public class ReverseColorModel extends ColorModel {
ColorModel sourceModel;
public ReverseColorModel(ColorModel sourceModel) {
super(sourceModel.getPixelSize());
this.sourceModel=sourceModel;
}
public int getAlpha(int pixel) {
return sourceModel.getAlpha(pixel);
}
public int getRed(int pixel) {
return ~sourceModel.getRed(pixel);
}
public int getGreen(int pixel) {
return ~sourceModel.getGreen(pixel);
}
public int getBlue(int pixel) {
return ~sourceModel.getBlue(pixel);
}
public int getRGB(int pixel) {
return (getAlpha(pixel)24)+(getRed(pixel)16)+(getGreen(pixel)8)+getBlue(pixel);
}
}
/* ReverseColorModel.java*/
/*@author:cherami */
/*email:cherami@163.net*/
import java.awt.image.*;
public class ReverseFilter extends RGBImageFilter {
public ReverseFilter() {
canFilterIndexColorModel=true;
}
public void setColorModel(ColorModel cm) {
substituteColorModel(cm,new ReverseColorModel(cm));
}
public int filterRGB(int x,int y,int pixel) {
return pixel;
}
}
要想取得自己的效果,需要修改ReverseColorModel.java中的三个方法,getRed、getGreen、getBlue。
下面是上面的效果的一个总的演示程序。
/*GrayImage.java*/
/*@author:cherami */
/*email:cherami@163.net*/
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import java.awt.color.*;
public class GrayImage extends JFrame{
Image source,gray,gray3,clip,bigimg;
BufferedImage bimg,gray2;
GrayFilter filter,filter2;
ImageIcon ii;
ImageFilter cropFilter;
int iw,ih;
public GrayImage() {
ii=new ImageIcon(\"images/11.gif\");
source=ii.getImage();
iw=source.getWidth(this);
ih=source.getHeight(this);
filter=new GrayFilter();
filter2=new GrayFilter(GrayModel.CS_FLOAT);
gray=createImage(new FilteredImageSource(source.getSource(),filter));
gray3=createImage(new FilteredImageSource(source.getSource(),filter2));
cropFilter=new CropImageFilter(5,5,iw-5,ih-5);
clip=createImage(new FilteredImageSource(source.getSource(),cropFilter));
bigimg=source.getScaledInstance(iw*2,ih*2,Image.SCALE_DEFAULT);
MediaTracker mt=new MediaTracker(this);
mt.addImage(gray,0);
try {
mt.waitForAll();
} catch (Exception e) {
}
Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
对于很多新手来说,刚开始接触Java会很迷惘,不知道Java可以做什么。其实Java 可以做的东西太多了,手机游戏、中间bai件、软件、网站,电脑游戏,以及现在流行的安卓手机app等,都是由java语言编写的。由于Java拥有很高的安全性、平台移植性等,所以受到广大程序员的喜爱。
java可以做软件
一般编程语言都可以做软件的,Java 也不例外,例如Eclipse,MyEclipse等知名Java开发工具。有关开发软件组件,可以了解Java Swing编程 或者 awt 相关知识。
Java可以做游戏
或者你不知道,在以前诺基亚还很流行的时候,你玩的手机游戏有90%以上都是Java开发的。当然现在已经很少人再去开发了,都转到安卓上去了。电脑上也有java开发的游戏,最经典的是:《我的世界》(minecraft ,简称MC)。
java可以做Android
Android是一种基于Linux的自由及开放源代码的操作系统,其源代码是Java。所以市场上见到的手机系统例如MIUI ,阿狸云,乐蛙等,都是修改源代码再发行的。Java做安卓不单单是指系统,还有APP.对于更多的开发人员来说,他们更多的时间是花在开发APP上面。
Java可以用来编写网站
对于学生来说,最关心的是java能做什么,市场上找什么工作都跟java有关。现在很多大型网站都用jsp写的,JSP 全名为 Java Server Pages。它是一种动态网页技术,比如我们熟悉的163,一些政府网站都是采用JSP编写的。所以学习Java的同学可以找编写网站方面的工作,而且现在找这方面的岗位比较多。
除了这些Java还有很多用途,家里的洗衣机、微波炉等家电有可能是java控制的,这是单片机的知识。找到自己喜欢的一个方向,专攻一个领域,才会做出成绩。
上学是个苦差事,终于要毕业了还要被毕业设计绊一跤,别的专业且不说,计算机软件应用的学生最苦恼了,是不是还在为做毕业设计而烦恼?以下为各位奉上我们毕业设计的精品,包括选题,论文以及项目源码。
以下三步让你不在为毕业设计而苦恼,三步轻松搞定!
第一步选题:
根据你的学习和生活经验发现需要改进的问题,并提出问题。
第二步论证:
把发现的问题进行分析并整理成论文,提出自己的见解/解决办法。
第三步实践:
用实际行动来解决所提出的问题,并得出自己的验证结论或解决办法。
1、动力节点-学生宿舍管理系统
本套毕业设计是动力节点原创,系统运用了MySQL为后台数据库,easyui作为前台技术,使用了当前较为流行的框架spring MVC+hibernate+spring架构,应用服务器使用了tomcat,以eclipse为开发工具,系统实现了宿舍管理、学生管理、宿舍分配、宿舍评比、损坏管理查询等必需的功能,其操作简单,界面友好,运行比较稳定,适用于大学院校大学生宿舍管理。
2、动力节点-库存管理系统
本套毕业设计是动力节点原创,该Java毕业设计使用技术:spring mvc+hibernate+spring,数据库使用了Mysql。提供了用户模块、产品管理、供应商管理、入库管理、出库管理、库存查看、系统管理、系统监控等模块。
3、动力节点-图书管理系统
本套毕业设计是动力节点原创,系统运用了使用技术:spring mvc+spring+hibernate,数据库使用了当前较为流行的Mysql。根据本校图书馆的工作流程与实际的需求和特色,本系统需满足以下几个方面的要求:1.对新书进行登记入库、下架管理;2.对借书读者信息提供维护功能;3.提供图书借书、续借、还书功能;4.提供图书超期未还自动扣款功能;5.提供数据导入功能。
4、动力节点-学生成绩管理系统
本套毕业设计是动力节点原创,采用java作为开发语言,使用了著名的开源框架spring MVC、hibernate、spring、easyui进行开发,而后台的数据库采用MySql。 学生成绩管理系统的开发主要包括前台用户界面的开发和后台数据库的开发,对于后台数据库的建立和维护要求建立起数据一致性和完整性强、数据安全性好的数据库。而对于前端应用程序的开发则要求应用程序能提供强大的数据操纵功能,界面友好、使用简单方便等特点。
5、动力节点-医院分诊管理系统
本套毕业设计是动力节点原创,分诊管理主要实现患者信息录入,分诊,排队等功能。该Java毕业设计使用了当前较为流行的spring MVC、hibernate、spring技术开发。本系统按功能具体可划分为四个模块:系统设置模块、患者管理模块、科室管理模块、分诊管理。1 患者查询功能:为了方便医生查找患者等信息,将所有患者信息按照需要进行分类。这样医生就能很方便的找到自己需要的信息。
6、动力节点-论坛
该论坛毕业设计使用了当前流行的框架组合springMVC + spring + mybatis框架,以myeclipse为开发工具,数据库使用了mysql,系统实现了发表帖子、 回复帖子、查看帖子等一般论坛中常用的功能,后台管理员可以对注册用户的基本管理,可直接部署在校内服务器上对校内同学进行发布,该论坛毕业 设计实现的功能较为简单,因此对于初学者来说比较容易理解和学习,是一个可以参考的Java web方面的毕业设计。
7、动力节点-超市订单管理
该超市订单管理毕业设计基于jdk7版本开发,在部署时需要使用jdk7以上的版本。使用了目前流行的框架组合spring+springMVC+mybatis的框架技术, 实现了供应商管理对供应商实现增删改查、订单管理对超市订单实现增删改查、用户管理等功能,适用于小型超市的使用,通过学习该超市订单管理 的毕业设计,对于SSM框架的组合能够有更深层次的理解。
8、动力节点-仿小米商城
该商城毕业设计仿照了小米来实现的,界面参考了小米商城的官方网站,由于时间关系,部分复杂的功能没有实现,只实现了一些常用的功能, 通过该毕业设计的学习,可以使初学者更好的理解电商系统的雏形,使用了电商系统流行的spring+springMVC+mybatis框架组合开发,数据库 方面使用了一般电商系统常用的mysql数据库。
9、动力节点-学生管理系统
该学生管理系统毕业设计基于jdk8开发,在部署时需要jdk8+的版本,使用了struts2框架,数据库操作方面使用了jdbc,虽然只使用了struts2框架, 但是前台使用了现在比较火的bootstrap,该毕业设计的特点是ui较为美观,实现了一些学生管理的基本功能,通过该毕业设计的学习,能够加深对 jdbc和struts2的理解,为后续学习hibernate、mybatis、spring、springmvc框架时打下良好基础
10、动力节点-Web在线聊天
该web在线聊天毕业设计没有涉及数据库方面的操作,系统业务不需要注册用户和保存用户聊天数据,因此只使用了springMVC+spring框架, 通信方面使用了WebSocket,通过WebSocket技术来实现了消息的发送。该web在线聊天的毕业设计有些类似互联网早期聊天室软件,对于想 学习WebSocket的同学有很大的参考价值。
11、动力节点-网站内容管理
该网站内容管理的毕业设计参考了某互联网金融机构,主要分为了前端展示和后台管理两个模块,前端展示网站的基本内容,后台管理来控 制前端所展示的内容。技术方面使用了以前经典的框架组合spring+struts+hibernate,实现了对网站内容管理的功能,通过该网站内容管 理毕业设计的学习,能够更好的理解一个网站的基本架构,为以后互联网方面技术的学习埋下伏笔。
12、动力节点-百度网盘搜索
该百度网盘搜索的毕业设计使用了最基本的servlet+jsp技术,采用eclipse开发,对于还未学习框架技术的同学有很大学习参考价值, 该系统核心部分通过调用bing、google等搜索引擎的接口,实现了搜索互联网中百度网盘分享的内容,即有人通过百度网盘对外分享文 件时,当被该文件的链接被搜索引擎抓取后就可以被搜索到了。对于想从网盘中搜索资料的同学,不妨下载该毕业设计源码研究一番。
13、动力节点-魂斗罗
该毕业设计完成了一个经典的魂斗罗小游戏,主要使用了JavaSE基础的技术,通过该魂斗罗游戏毕业设计的学习,能够使初学者巩固 自己的JavaSE基础方面的知识,为后续JavaEE方面的学习打下良好基础,对于打算自己开发小游戏的同学来说可以撸一下源码,当魂 斗罗的程序运行成功后,耳边响起熟悉的音乐,相信该毕业设计能够唤起很多人的回忆。
14、动力节点-俄罗斯方块
该毕业设计实现了一个俄罗斯方块的游戏,主要使用了JavaSE基础的技术,通过俄罗斯方块游戏毕业设计的学习,能够使初学者巩 固自己的JavaSE基础方面的知识,为后续JavaEE方面的学习打下良好基础,对于打算自己开发小游戏的同学来说可以研究一下,当 俄罗斯方块程序运行成功后,看到熟悉的画面,你一定会响起童年的乐趣。
15、动力节点-医院人事管理系统
该医院人事管理系统毕业设计基于jdk8开发,部署时需要jdk8以上的版本,使用了当前最为流行的spring MVC+spring+mybatis+bootstrap+maven技术, ui比较清爽,实现了一般人事管理的功能,诸如请假、审批、人员管理等模块,通过该医院人事管理系统毕业设计的学习,可以更改的理解ssm+maven+bootstrap组合的工作方式。
即将推出:
原文:
毕设下载地址: