`
zg973595977
  • 浏览: 11975 次
社区版块
存档分类
最新评论

根据尺寸裁剪照片 java

    博客分类:
  • java
阅读更多
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
import java.io.File;

import javax.imageio.ImageIO;

public class ImageThumb {
public static BufferedImage resize(BufferedImage source, int targetW,
int targetH) {
// targetW,targetH分别表示目标长和宽
int type = source.getType();
BufferedImage target = null;
double sx = (double) targetW / source.getWidth();
double sy = (double) targetH / source.getHeight();
// 这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放
// 则将下面的if else语句注释即可
if (sx > sy) {
sx = sy;
targetW = (int) (sx * source.getWidth());
} else {
sy = sx;
targetH = (int) (sy * source.getHeight());
}
if (type == BufferedImage.TYPE_CUSTOM) { // handmade
ColorModel cm = source.getColorModel();
WritableRaster raster = cm.createCompatibleWritableRaster(targetW,
targetH);
boolean alphaPremultiplied = cm.isAlphaPremultiplied();
target = new BufferedImage(cm, raster, alphaPremultiplied, null);
} else
target = new BufferedImage(targetW, targetH, type);
Graphics2D g = target.createGraphics();
// smoother than exlax:
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
return target;
}

public static void saveImageAsJpg(String fromFileStr, String saveToFileStr,
int width, int hight) throws Exception {
BufferedImage srcImage;
// String ex =
// fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
String imgType = "JPEG";
if (fromFileStr.toLowerCase().endsWith(".png")) {
imgType = "PNG";
}
// System.out.println(ex);
File saveFile = new File(saveToFileStr);
File fromFile = new File(fromFileStr);
srcImage = ImageIO.read(fromFile);
if (width > 0 || hight > 0) {
srcImage = resize(srcImage, width, hight);
}
ImageIO.write(srcImage, imgType, saveFile);

}



/**示例*/
public static void main(String argv[]) {
try {
// 参数1(from),参数2(to),参数3(宽),参数4(高)
ImageThumb.saveImageAsJpg("D:\\images\\op.jpg", "D:\\images\\op(mini).jpg",
200, 200);
} catch (Exception e) {
e.printStackTrace();
}

}
}
分享到:
评论

相关推荐

    java处理裁剪图片(更改图片大小)

    在Java编程中,处理图像操作是一项常见的任务,其中包括裁剪图片和更改图片尺寸。下面将详细介绍这三种方法。 首先,我们来谈谈使用第三方工具ImageMagick。ImageMagick是一款强大的命令行工具,能够处理各种图像...

    Thumbnails图片处理压缩/裁剪java代码纯净示例+注释详细

    在Java开发中,图片处理是一项常见的任务,包括压缩、裁剪、旋转以及添加水印等。`Thumbnails`是一个强大的库,它简化了这些操作,提供了直观且易于使用的API。本示例将深入讲解如何使用`Thumbnails`库进行图片处理...

    java图片裁剪

    在Java编程语言中,处理图像任务,如图片压缩和裁剪,是常见的需求。这些功能在Web开发、桌面应用或移动应用中都有广泛的应用。Java提供了多种库来帮助开发者完成这些任务,使得图像处理变得更加方便。本文将深入...

    java图片等比压缩后裁剪

    等比压缩是指保持原图宽高比例进行压缩,以避免图像失真,而裁剪则是根据特定需求去除图片的边缘或调整尺寸。 首先,我们需要引入处理图像的库。Java标准库提供了`java.awt.image.BufferedImage`类,可以用于读取、...

    java裁剪、缩放图片工具类

    这个"java裁剪、缩放图片工具类"提供了这样的功能。它包含两个主要的组件:一个工具类(ImgUtils.java)和一个测试类(Test.java)。让我们深入探讨这两个类及其背后的图像处理原理。 首先,`ImgUtils.java`是核心...

    java图片上传、控制大小、宽度高度和图片裁剪并保存

    在Java编程中,图片处理是一项常见的任务,包括图片的上传、尺寸控制、宽高调整以及裁剪和保存等操作。这些功能在Web应用、图像处理软件或者数据分析项目中都有广泛的应用。下面我们将深入探讨如何使用Java实现这些...

    java 图像上传裁剪

    接收到数据后,Java代码需要解析前端传来的裁剪参数,然后使用图像处理库,如Java Advanced Imaging (JAI) 或 OpenCV,根据这些参数对原始图像进行裁剪。 在Java中,JAI是一个强大的图像处理库,它可以进行复杂的...

    java图片的上传裁剪功能实现

    裁剪部分,可以通过解析用户提供的坐标和尺寸信息,动态地裁剪图片。如果使用了图像处理库,它们通常提供了方便的API来实现这一过程。 5. **响应返回**: 完成裁剪后,服务器需要将结果反馈给客户端。这可能是一个...

    用于裁剪图片的JAVA代码

    这个名为“用于裁剪图片的JAVA代码”的项目提供了一种实现方式,允许开发者根据指定的坐标和尺寸从原始图片中提取出部分图像。接下来,我们将深入探讨如何在Java中进行图片裁剪,以及可能涉及的关键知识点。 首先,...

    jquery crop+java 裁剪上传图片

    当收到前端发送的裁剪参数和原始图片数据后,Java服务器会接收文件,解析裁剪参数,并使用图像处理库(如Java的ImageIO或第三方库如Imgscalr)根据参数对图片进行裁剪。裁剪后的图片可以被保存到服务器的特定目录,...

    jsp+CropZoom+jquery+java 图片缩放裁剪

    【标题】"jsp+CropZoom+jquery+java 图片缩放裁剪" 是一个基于Web的图像处理系统,主要用于实现用户在上传头像时进行自由裁剪的功能。这个项目使用了JSP(JavaServer Pages)作为后端动态网页技术,CropZoom作为前端...

    Cropper 图片裁剪工具 --java

    在Java后端,你可以使用诸如`javax.imageio.ImageIO`类来读取和处理图片,根据前端传来的裁剪参数进行裁剪。例如,你可以创建一个裁剪方法: ```java public BufferedImage cropImage(BufferedImage source, ...

    图片裁剪、缩放工具类

    1. 图片裁剪(Crop):裁剪图片到指定的尺寸或特定区域,可能使用了Java的BufferedImage类和Graphics2D接口。 2. 图片缩放(Resize):调整图片大小,可以使用按比例缩放或者保持原图宽高比的方式。可能涉及的方法有...

    java_CutImage.rar_java cutImage_js图片裁剪

    Java 和 JavaScript 图片裁剪技术是网页开发中常见的功能,用于用户自定义选取图片的特定区域并进行裁剪。在给定的“java_CutImage.rar_java cutImage_js图片裁剪”主题中,我们将深入探讨这个过程的实现细节,包括...

    可裁剪头像上传+java

    这个过程包括读取原始图片,根据裁剪参数创建一个新的图像区域,然后保存裁剪后的图像。最后,裁剪好的头像可以存储到服务器的持久化存储如硬盘或云存储服务,并且更新用户的头像信息。 安全方面,需要注意的是,...

    java 图片上传,可预览可剪切可缩放

    - **后端缩放**:在服务器端,可以使用Java的图像处理库,如`ImageIO`或`JavaFX`,根据指定尺寸重新调整图片大小。 5. **Java实现** - **Servlet处理**:Java Web应用通常使用Servlet来接收上传的文件,解析`...

    java版上传头像裁剪

    在本项目中,用户可以上传个人头像,然后系统会对上传的图片进行裁剪,生成适合特定尺寸的头像。下面将详细讲解这个过程中的关键知识点。 1. **JSP(JavaServer Pages)**:JSP是Java的一种动态网页技术,它允许...

    android 自定义比例裁剪图片(拍照 相册)方式 16:9 10:7 自定义

    在Android开发中,图片裁剪是一项常见的功能,用于让用户选择并调整图片的显示区域,以满足特定的比例或尺寸需求。本篇文章将详细讲解如何在Android应用中实现自定义比例的图片裁剪,包括从相机拍照和相册选取图片后...

    java处理图片大小等比例缩放,自定义修改图片大小,截取,水印

    为了等比例缩放图片,我们需要获取原始图片的宽高比,然后根据目标尺寸计算出新的宽高。关键代码可能如下: ```java BufferedImage source = ImageIO.read(new File("input.jpg")); int width = source.getWidth...

    java图像处理方法:灰度化,二值化,降噪,切割,裁剪,找相似等

    `BufferedImage`的`getSubimage()`方法也可用于裁剪,但需确保新图像的尺寸与裁剪后的区域一致。 6. **找相似图像**: 寻找相似图像涉及到图像特征的提取和匹配,如颜色直方图、SIFT(尺度不变特征变换)或SURF...

Global site tag (gtag.js) - Google Analytics