package com.supben.util;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import org.apache.log4j.Logger;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class ImageUtil {
private static final Logger log = Logger.getLogger(ImageUtil.class);
/**
* 切割图片
* @param x 截点横坐标 (从左开始计数)
* @param y 截点纵坐标 (从上开始计数)
* @param width 截取的宽度
* @param height 截取的长度
* @param oldpath 图片位置
* @param newpath 新生成的图片位置
*/
public static void cutImage(int x, int y, int width, int height, String oldpath, String newpath) {
FileInputStream is = null;
ImageInputStream iis = null;
//这个是获取图片扩展名的方法,比如:jpg。我这里有现成的,如果没有,自己实现
String imgType = StringUtil.getExt(oldpath);
try {
is = new FileInputStream(oldpath);
Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName(imgType);
ImageReader reader = it.next();
iis = ImageIO.createImageInputStream(is);
reader.setInput(iis, true);
ImageReadParam param = reader.getDefaultReadParam();
Point p = new Point();
p.setLocation(x, y);
Dimension d = new Dimension();
d.setSize(width, height);
Rectangle rect = new Rectangle(p, d);
param.setSourceRegion(rect);
BufferedImage bi = reader.read(0, param);
ImageIO.write(bi, imgType, new File(newpath));
is.close();
iis.close();
} catch (Exception e) {
log.error(e);
}
}
/**
* 缩略图片
* @param oldpath 原图片
* @param newpath 新生成的图片存放地址
* @param wdith 缩略后的宽
* @param height 缩略后的高
*/
public static void scaleImage(String oldpath, String newpath, int wdith, int height) {
// 获取老的图片
File oldimg = new File(oldpath);
try {
BufferedImage bi = ImageIO.read(oldimg);
Image Itemp = bi.getScaledInstance(wdith, height, BufferedImage.SCALE_SMOOTH);
BufferedImage thumbnail = new BufferedImage(wdith, height, BufferedImage.TYPE_INT_RGB);
thumbnail.getGraphics().drawImage(Itemp, 0, 0, null);
// 缩略后的图片路径
File newimg = new File(newpath);
FileOutputStream out = new FileOutputStream(newimg);
// 绘图
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbnail);
param.setQuality(1.0f, false);
encoder.encode(thumbnail);
out.close();
bi.flush();
bi = null;
} catch (IOException e) {
log.error(e);
}
}
public static void main(String[] args) {
scaleImage("D:/2.jpg", "D:/3.jpg", 50, 50);
}
}
分享到:
相关推荐
JS按照图片比例缩放,截图图片中间部分,仿人人相册缩略图效果,保证图片不失真 JS按照图片比例缩放,截图图片中间部分,仿人人相册缩略图效果,保证图片不失真
漂亮强大图片截取缩略
上传有大小限制,所以工程移除了lib,需要自己下载 javacv jar包下载地址:http://search.maven.org/remotecontent?filepath=org/bytedeco/javacv-platform/1.4.2/javacv-platform-1.4.2-bin.zip
获取图片的缩略图鼠标拽区,截取图片的指定区域 在Panel控件上绘图,绘制鼠标拽出来的矩形。双重缓存的运用。Invalidate、Paint重绘控件。Bitmap,Image,Rectangle运用。
mvc4 截取上传图片做头像,自动生成不同小尺寸缩略图 来自 http://zengxiangzhan.cnblogs.com/ 上传
Android裁剪图片(裁剪为缩略图和大图两种形式)
通过canvas来获取上传视频的图片作为缩略图,方便快捷
利用jquery截取图片并保存在服务器上
C# (winform) 图片缩略图的显示与缩略图另行保存功能
截取指定时间内的视频缩略图。 一 使用MPMoviePlayerController自带的方法 二 使用AVAssetImageGenerator
HTML5 PHP按比例生成图片缩略图并上传,这是采用的HTML5上传图片,并实现了裁切功能,如图所示的效果,用户浏览到一张图片后,虽然预设有图片缩略图的长度和宽度,但在生成缩略图的时候,会智能按照图片的宽高比例来...
程序可用来图片上传中,切割关键的部分上传。 可放大缩小原图功能,切割原图为缩略图功能。应用上可以自己根据要求创意。 jquery+asp.net(C#) 开发 .net 2.0
phpThumb图片缩略图无损多样压缩类 真正可以实现利用GD实现图片质量无损压缩(可以自定义质量) 代码示例: include 'ThumbLib.inc.php'; $width = isset($_GET['w']) ? floatval($_GET['w']) : 100; $height = is...
1--控制一张图片等比例缩放容易 ,不失真 2--控制多张图片切换时每张图片保持等比例缩放,不失真
多环境部署需求 ffmpeg-4.1-1.4.4.jar ffmpeg-4.1-1.4.4-windows-x86_64.jar ffmpeg-4.1-1.4.4-windows-x86.jar ffmpeg-4.1-1.4.4-macosx-x86_64.jar ffmpeg-4.1-1.4.4-linux-ppc64le.jar ffmpeg-4.1-1.4.4-linux-...
/// 以图片中心为轴心,截取正方型,然后等比缩放 /// 用于头像处理 /// /// 吴剑 2012-08-08 /// 图片绝对地址 /// 缩略图存放地址 /// 指定的边长(正方型) /// 质量(范围0-100) public static void ...
用c#写的压缩图的方法,不足地方欢迎指出。...对于大图片有时候我们需要生成其对应的缩略图,该方法根据你想要的压缩宽高对原图进行按比列压缩,压缩后结果是整张图片的,不会出现只压缩截取部分的情况。
在网站建设过程中,需要处理图片的地方多不胜数,用PHP的图片函数处理图片,...而且对新手来讲十分不好掌握。现在我们可以用PHPThumb类库来处理图片,包括,图片尺寸调整,图片截取,图片加水印,图片旋转等等功能。