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);
}
}
分享到:
相关推荐
综上所述,"漂亮强大图片截取缩略"不仅涵盖了图片的获取和处理,还涉及到用户体验和性能优化等多个层面。在实际应用中,开发者需要结合具体需求,选择合适的方法和技术,确保图片处理既美观又高效。
9. **响应式设计**:在响应式布局中,图片缩略图的大小可能随着屏幕尺寸变化,因此需要确保无论在什么设备上,都能正确地按比例截取和显示图片。 10. **安全性和隐私**:处理用户上传的图片时,要关注跨域问题和...
截取视频缩略图的过程,本质上是将视频中的某一帧图片提取出来,通常为JPEG或PNG格式。这一过程可以通过FFmpeg的命令行参数实现。 命令的基本结构如下: ``` ffmpeg -i input_video.mp4 -vf "select='eq(n,expr)',...
在JAVA中,我们通常会借助第三方库来完成视频截取缩略图的操作,因为JAVA标准库并没有直接提供这样的功能。以下是一些常用的JAVA视频处理库: 1. **Xuggler**:这是一个开源的JAVA库,能够处理多种音视频格式,包括...
"js php 截取缩略图"这个主题涉及到两个主要技术:JavaScript(js)和PHP,它们分别在前端和后端处理图像的截取与缩放。下面将详细阐述这两个技术在生成缩略图过程中的应用。 首先,JavaScript(JS)是客户端脚本...
上传有大小限制,所以工程移除了lib,需要自己下载 javacv jar包下载地址:http://search.maven.org/remotecontent?filepath=org/bytedeco/javacv-platform/1.4.2/javacv-platform-1.4.2-bin.zip
在截取缩略图时,我们需要创建一个新的`Bitmap`对象,然后使用`Graphics`对象从原始`Image`中绘制用户选择的矩形区域。 5. **Rectangle类**:`Rectangle`结构体用于表示二维矩形区域。它包含四个属性:`Left`、`Top...
总结,FCKEditor图片截取代码是通过集成图像处理库和自定义上传逻辑实现的,允许用户上传并自定义生成的缩略图大小。这种功能提升了FCKEditor的易用性,同时也对网站的性能和用户体验起到了积极的作用。在实际应用中...
2. 将上传的图片截取为需要的形状。 3. 创建不同尺寸的缩略图。 4. 保存裁剪后的图片和缩略图到服务器。 5. 更新数据库中的用户头像信息。 6. 在视图中提供上传界面和反馈信息。 通过以上步骤,我们可以构建一个...
总结来说,"图片切割,截取图片的某一份为头像功能(Asp.net C# 2.0)"是一个结合了前端jQuery交互和后端Asp.net C#图片处理技术的项目,实现了用户自定义选择图片部分并生成头像的功能。它不仅展示了Web开发中的...
1. **创建`MPMoviePlayerController`对象**:首先,你需要创建一个`MPMoviePlayerController`实例,并指定你要截取缩略图的视频URL。 ```swift let videoURL = URL(fileURLWithPath: "path/to/your/video.mp4") let...
在C# WinForm应用开发中,处理图片是一项常见的任务...总之,C# WinForm提供了强大的图像处理能力,可以轻松实现图片缩略图的显示和保存。通过熟练掌握相关类库和方法,开发者可以构建出高效且用户体验良好的图像应用。
总结来说,通过结合jQuery的事件处理、Ajax通信,以及HTML5的Canvas和PHP的图像处理功能,我们可以实现一个用户友好的图片截取和上传功能。这个过程中需要注意安全性和用户体验的提升,以及跨浏览器兼容性的考虑。
在生成缩略图后,你可能需要使用JAI来调整图片的大小和格式。 4. **JavaFX:** 虽然JavaFX主要是用于构建桌面和网页应用的图形用户界面,但它也包含了一些处理媒体的类,可以用于视频播放和截图。通过`Media`和`...
**标题详解:** "jcrop JavaScript图片截取工具" 是一个基于JavaScript的开源库,用于在网页上实现图片的选择和裁剪功能。它无需依赖Flash技术,因此可以在各种现代浏览器和移动设备上运行,提供了良好的跨平台兼容...
UCFlash通常是指Discuz的UCenter Flash组件,它可能包含了头像上传和处理的相关接口,比如JavaScript或者ActionScript代码,这些代码负责与服务器交互,完成图片的上传、截取和缩略操作。 实现头像截取和缩略的过程...
在实际应用中,结合图片压缩和截取技术,我们可以实现快速分享大图、批量处理图片、自动化生成缩略图等功能;而目录遍历则能帮助我们自动化处理大量文件,如批量重命名、备份、清理冗余图片等。这些都是IT从业者必备...
为了提供用户友好的体验,有时我们需要从上传的视频中提取一张图片作为预览或缩略图。在这种情况下,`canvas`元素就派上了用场。`canvas`是HTML5引入的一个强大的绘图工具,允许开发者动态地在网页上绘制图形、图像...