`
aa00aa00
  • 浏览: 331341 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
文章分类
社区版块
存档分类
最新评论

java图片处理

 
阅读更多

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)
+ "毫秒");
}
}

 

分享到:
评论

相关推荐

    Java图片处理类库SimpleImage.zip

    SimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。 SimpleImage中的ImageRender是图片处理的基类,它是一个抽象类,我们看到,该类中定义了一个抽象方法render(),同时持有一个对...

    Java图片处理工具ImageMagick

    Java图片处理工具ImageMagick是一个强大的跨平台图形处理库,它允许开发人员在Java应用程序中进行复杂的图像操作,包括但不限于转换、编辑、合成图像以及处理大量格式的图像文件。ImageMagick是由C语言编写的,但...

    java 图片处理工具类 java 图片处理工具类

    java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 java 图片处理工具类 ...

    java 图片处理源码

    这是一个Java图片处理程序。 Java 开源代码,高手学习 java 图片处理源码

    Java图片处理技术

    在Java编程语言中,处理...综上所述,这段代码展示了Java如何利用AWT库进行图片处理,包括添加图片和文字水印,以及处理透明度和定位。这些都是Java图形处理的基本技术,对于开发涉及图像编辑和处理的应用非常有用。

    java 图片处理类

    在Java编程领域,图片处理是一项常见的任务,尤其是在网站开发、移动应用或者数据分析中。这个"java 图片处理类"提供了一种便捷的方式,用于给图片添加水印以及压缩图片,这是开发过程中非常实用的功能。下面将详细...

    java图片处理类-java课程设计

    Java图片处理类是Java编程语言中用于操作和处理图像文件的核心技术,主要涉及Java的AWT(Abstract Window Toolkit)和Swing库。在Java课程设计中,学生通常会被要求掌握这些概念并应用到实际项目中,例如创建一个...

    java图片缩放 java缩略图 缩略图 java图片处理

    java图片缩放 java缩略图 缩略图 java图片处理

    java图片处理工具类JAR包 java-image-scalingjar

    java图片处理工具类JAR包 java-image-scalingjar

    java图片处理 根据大小获取指定大小图片

    java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小...

    rt java图片处理jar包

    这里我们关注的是“rt java图片处理jar包”,这个标题暗示了一个专门用于处理图片的Java库,可能封装了一些方便开发者使用的API。描述中的“图片水印处理,java图片处理”进一步确认了这个库的主要功能之一是添加...

    Java图片处理解决方案:ImageMagick快速入门教程.docx

    Java 图片处理解决方案:ImageMagick 快速入门教程 Java 图片处理解决方案中,ImageMagick 是一个免费的创建、编辑、合成图片的软件,可以实现图片切割、颜色替换、图片缩略图、图片水印等各种效果。ImageMagick 是...

    java 图片处理 切图代码

    java 图片处理 切图代码 实现自动缩放图片

    java图片处理工具类

    图片添加水印图片、可设置水印图片旋转角度;图片添加水印文字(自动换行)、可设置水印文字的旋转角度;获取文本所占长度像素;图片截取;图片高质量缩放;图片png格式缩放;图片克隆副本;读取图片对象;图片输出 ...

    java图片处理JAI 的jar

    Java 图片处理库Java Advanced Imaging (JAI) 是一个强大的工具,用于在Java环境中进行复杂的图像操作和处理。这个库提供了丰富的功能,包括但不限于图片的读取、写入、旋转、缩放、颜色空间转换以及各种滤镜应用。...

    Java图片处理-生成火焰效果.rar

    Java图片处理-生成火焰效果,public class FirePicApplet extends Applet implements Runnable{  private Image backImage,foreImage; //前景和背景Image对象  private Image image,fireImage; //Applet和绘制...

    java图片处理类

    这是一个java生成随即图片验证码,java图片压缩,java图片水印 ,java图片裁剪 ,java图片旋转 ,java图片放大缩小等工具类,里面有测试方法,欢迎使用!

Global site tag (gtag.js) - Google Analytics