package ii7090;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class PngTools {
/**
* 图像类型转换 GIF->JPG GIF->PNG PNG->JPG PNG->GIF(X)
*/
public static void convert(String source, String result) {
try {
File f = new File(source);
f.canRead();
f.canWrite();
BufferedImage src = ImageIO.read(f);
ImageIO.write(src, "JPG", new File(result));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 彩色转为黑白
*
* @param source
* @param result
*/
public static void gray(String source, String result) {
try {
BufferedImage src = ImageIO.read(new File(source));
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorConvertOp op = new ColorConvertOp(cs, null);
src = op.filter(src, null);
ImageIO.write(src, "JPEG", new File(result));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 实现图像的切割
*
* @param srcImageFile
* @param standardWidth
* @param standardHeight
*/
public static void cut(String srcImageFile, int standardWidth,
int standardHeight) {
try {
Image img;
ImageFilter cropFilter;
System.out.println("cut image");
// 读取源图像
BufferedImage bi = ImageIO.read(new File(srcImageFile));
int srcWidth = bi.getWidth(); // 源图宽度
int srcHeight = bi.getHeight(); // 源图高度
Image image = bi.getScaledInstance(srcWidth, srcHeight,
Image.SCALE_DEFAULT);
int dx = 0;// 裁剪图像的x点位置
int dy = 0;// 裁剪图像的y点位置
cropFilter = new CropImageFilter(dx, dy, standardWidth,
standardHeight);//提取现有 Image 中的给定矩形区域,为包含刚提取区域的新图像提供源。
img = Toolkit.getDefaultToolkit().createImage(
new FilteredImageSource(image.getSource(), cropFilter));//使用FilteredImageSource为原图像的新过滤版本产生图像数据
BufferedImage tag = new BufferedImage(standardWidth,
standardHeight, BufferedImage.TYPE_INT_RGB); //创建width,height大小的一个图像缓冲区
Graphics g = tag.getGraphics();
g.drawImage(img, 0, 0, null);
g.dispose();
ImageIO.write(tag, "JPEG", new File(srcImageFile + "pp.jpg"));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 实现图像的缩放
*
* @param srcImageFile
* @param standardWidth
* @param standardHeight
*/
public static void scale(String srcImageFile, int standardWidth,
int standardHeight) {
try {
System.out.println("scale image");
BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件
Image image = src.getScaledInstance(standardWidth, standardHeight,
Image.SCALE_DEFAULT); //根据width,height创建此图像的缩放版本,按指定的 width 和 height 呈现图像
BufferedImage tag = new BufferedImage(standardWidth,
standardHeight, BufferedImage.TYPE_INT_RGB); //创建width,height大小的一个图像缓冲区
Graphics g = tag.getGraphics();
g.drawImage(image, 0, 0, null); //将图像会知道缓冲区上
g.dispose();
ImageIO.write(tag, "JPG", new File(srcImageFile + "name.JPG"));// 输出到文件流
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
cut("d:/2012.jpg", 2000, 2000);
// scale("D:/2012.jpg", 200, 100);
}
}
参考:http://blog.csdn.net/boy_wh520/archive/2007/04/12/1561519.aspx
http://twobrushes.blog.163.com/blog/static/7891240420082824148850/
分享到:
相关推荐
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串(比如对图片文件的操作就只能用字节流) 3-5.一个字符可以是1个字节,也可以是2个或多个字节 一个字节就是8个位,也就是对同一数据源...
函数说明 菜单的事件监听,相应不同的菜单操作。 函数原型 findAccelerKey(java.lang.String text) 函数说明 根据指定的文本得到快捷键。 函数原型 canvasInit() 函数说明 画布的初始化函数。 函数原型 new...
使用J2SE 对jpeg格式的图片进行操控,并实现一定的绘图功能
9、运行ShowQueryDB类,你会看到对derby数据库的新增修改操作动作,其中有写入图片到数据库的语句,以及从数据库读到图片并显示出来窗体中的语句。 阅读对象:熟悉Swing编程、JDBC编程的学员。 感觉:因为derby是纯...
该类库的主要功能在于帮助开发人员在 Java 应用程序(J2SE和J2EE)中生成 PDF 文档和操作现有 PDF 文档,并且运行环境无需安装 Adobe Acrobat。 Spire.PDF for Java 支持的功能非常丰富,例如 PDF 文档安全性设置,...
Free Spire.Barcode for JAVA 是 Spire.Barcode for JAVA 的免费产品。Free Spire.Barcode for JAVA 是一款基于 ...开发人员能够方便快捷的将 Free Spire.Barcode for JAVA 整合到 JAVA 平台 (J2SE and J2EE) 程序中。
开发环境和工具本项目在与Android开发工具集成的Eclipse IDE上使用J2SE和android SDK 2.1开发,运行在Win7操作系统上。 并在安卓手机HTC G11上进行了测试。应用程序设计、分析和实现应用设计如图1所示,我们的应用...
图片过大可能加载不出,请自行至项目相应的文件查看 最新更新:修正HashMap1.8中变树阈值部分泊松分布的概率分布图 网络通信 操作系统层面 Redis 最新更新:Redis分布式锁细节补充 Spring Bean 声明周期 & 循环依赖 ...
16 j2se5.0 新特性 自动装箱和拆箱; 新的for循环; 枚举类型; 静态导入; 格式化输出; 使用ProcessBuilder执行本地命令; 泛型编程; 监控和管理虚拟机;新的线程执行架构; 线程锁; 线程条件; 线程同步装置:semaphore ...
可以定义点,系统自动在点与点... 可以通过鼠标的拖动操作调整直线的曲率(度),从而实现弧线的功能。 可以在任意位置放置补充说明的文字,并且可以调整文字的大小。 可以保存成通用的网页图片JPG格式。
3 缩放图片 10. 4 2D图形 10. 5 3D图形.. 10. 6 一个时钟程序 第11章 Java多媒体 11. 1 滚动的消息 11. 2 三维弹球 11. 3 贪吃蛇游戏 11. 4 Java声音处理 11. 5 媒体播放器 ...
介绍J2EE、J2SE、J2SE的区别。 2.J2EE是一种技术还是一种平台,他提供了那些技术。 3.什么是Application Server,它有什么功能和优点。 4.简单介绍连接池的优点和原理。 5.Web.xml的作用 四、其他 1.Web安全性...
Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...