java图片处理的代码,呵呵!!
写道
/**
* 图片缩放工具类
*/
package com.wanda.film.mobile.util;
import java.io.*;
import java.util.Calendar;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.*;
import javax.imageio.ImageIO;
public class ImageUtils {
/**
* 缩放
*
* @param filePath
* 图片路径
* @param height
* 高度
* @param width
* 宽度
* @param bb
* 比例不对时是否需要补白
*/
public static void resize(String filePath, int height, int width, boolean bb) {
try {
double ratio = 0.0; // 缩放比例
File f = new File(filePath); // 文件路径
BufferedImage bi = ImageIO.read(f);
Image itemp = bi.getScaledInstance(width, height, bi.SCALE_SMOOTH);
// 计算比例
if ((bi.getHeight() > height) || (bi.getWidth() > width)) {
if (bi.getHeight() > bi.getWidth()) {
ratio = (new Integer(height)).doubleValue()
/ bi.getHeight();
} else {
ratio = (new Integer(width)).doubleValue() / bi.getWidth();
}
AffineTransformOp op = new AffineTransformOp(AffineTransform
.getScaleInstance(ratio, ratio), null);
itemp = op.filter(bi, null);
}
if (bb) {
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, width, height);
if (width == itemp.getWidth(null))
g.drawImage(itemp, 0, (height - itemp.getHeight(null)) / 2,
itemp.getWidth(null), itemp.getHeight(null),
Color.white, null);
else
g.drawImage(itemp, (width - itemp.getWidth(null)) / 2, 0,
itemp.getWidth(null), itemp.getHeight(null),
Color.white, null);
g.dispose();
itemp = image;
}
ImageIO.write((BufferedImage) itemp, "jpg", f);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void scale(String srcImageFile, String result, int tagwidth,
int tagheight) {
try {
BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件
int width = src.getWidth(); // 得到源图宽
int height = src.getHeight(); // 得到源图长
// if (tagwidth > width && tagheight > height) {
// return;
// }
// 图片尺寸计算
double tsx = (double) width / tagwidth;
double tsy = (double) height / tagheight;
double theheight = height / tsx;
if ((int) Math.round(theheight) > tagheight) {
double thewidth = width / tsy;
tagwidth = (int) Math.round(thewidth);
} else {
tagheight = (int) Math.round(theheight);
}
/* 用于AffineTransform.getScaleInstance返回表示缩放变换的变换。 */
double sx = (double) tagwidth / src.getWidth();
double sy = (double) tagheight / src.getHeight();
/*
* TYPE_INT_RGB:表示一个图像,具有打包成整数像素的 8 位 RGB 颜色分量
* TYPE_INT_ARGB:比RGB多了透明度的alpha值
*/
BufferedImage tag = new BufferedImage(tagwidth, tagheight,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = tag.createGraphics();
/* 为呈现算法设置单个首选项的值 */
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
/* 呈现 RenderedImage,在绘制前进行从图像空间到用户空间的转换 */
g.drawRenderedImage(src, AffineTransform.getScaleInstance(sx, sy));
/* 释放此图形的上下文并释放它所使用的所有系统资源 */
g.dispose();
ImageIO.write(tag, "JPEG", new File(result));// 输出到文件流
} catch (IOException e) {
e.printStackTrace();
}
}
// 测试图片缩放
public static void main(String[] args) throws IOException {
// ImageUtils.resize("D:\\photo\\005.jpg", 480, 320,true);
Calendar calendar = Calendar.getInstance();
long startTime = calendar.getTimeInMillis();
// 测试图片转换
ImageUtils.scale("D:\\photo\\12.jpg", "D:\\photo\\12test.jpg", 39, 39);
Calendar calendar1 = Calendar.getInstance();
long endTime = calendar1.getTimeInMillis();
// 测试图片转换的时间
System.out.println("图片转换的时间: " + String.valueOf(endTime - startTime)
+ "毫秒");
}
}
分享到:
相关推荐
SimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。 SimpleImage中的ImageRender是图片处理的基类,它是一个抽象类,我们看到,该类中定义了一个抽象方法render(),同时持有一个对...
Java图片处理工具ImageMagick是一个强大的跨平台图形处理库,它允许开发人员在Java应用程序中进行复杂的图像操作,包括但不限于转换、编辑、合成图像以及处理大量格式的图像文件。ImageMagick是由C语言编写的,但...
java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 ...
这是一个Java图片处理程序。 Java 开源代码,高手学习 java 图片处理源码
在Java编程语言中,处理...综上所述,这段代码展示了Java如何利用AWT库进行图片处理,包括添加图片和文字水印,以及处理透明度和定位。这些都是Java图形处理的基本技术,对于开发涉及图像编辑和处理的应用非常有用。
在Java编程领域,图片处理是一项常见的任务,尤其是在网站开发、移动应用或者数据分析中。这个"java 图片处理类"提供了一种便捷的方式,用于给图片添加水印以及压缩图片,这是开发过程中非常实用的功能。下面将详细...
Java图片处理类是Java编程语言中用于操作和处理图像文件的核心技术,主要涉及Java的AWT(Abstract Window Toolkit)和Swing库。在Java课程设计中,学生通常会被要求掌握这些概念并应用到实际项目中,例如创建一个...
java图片缩放 java缩略图 缩略图 java图片处理
java图片处理工具类JAR包 java-image-scalingjar
java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小...
这里我们关注的是“rt java图片处理jar包”,这个标题暗示了一个专门用于处理图片的Java库,可能封装了一些方便开发者使用的API。描述中的“图片水印处理,java图片处理”进一步确认了这个库的主要功能之一是添加...
Java 图片处理解决方案:ImageMagick 快速入门教程 Java 图片处理解决方案中,ImageMagick 是一个免费的创建、编辑、合成图片的软件,可以实现图片切割、颜色替换、图片缩略图、图片水印等各种效果。ImageMagick 是...
java 图片处理 切图代码 实现自动缩放图片
图片添加水印图片、可设置水印图片旋转角度;图片添加水印文字(自动换行)、可设置水印文字的旋转角度;获取文本所占长度像素;图片截取;图片高质量缩放;图片png格式缩放;图片克隆副本;读取图片对象;图片输出 ...
Java 图片处理库Java Advanced Imaging (JAI) 是一个强大的工具,用于在Java环境中进行复杂的图像操作和处理。这个库提供了丰富的功能,包括但不限于图片的读取、写入、旋转、缩放、颜色空间转换以及各种滤镜应用。...
Java图片处理-生成火焰效果,public class FirePicApplet extends Applet implements Runnable{ private Image backImage,foreImage; //前景和背景Image对象 private Image image,fireImage; //Applet和绘制...
这是一个java生成随即图片验证码,java图片压缩,java图片水印 ,java图片裁剪 ,java图片旋转 ,java图片放大缩小等工具类,里面有测试方法,欢迎使用!