Java 图片裁切及放大缩小, 仅供参考, 要学会举一反三, 其它问题欢迎交流...
import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; /** * @author Colin Davis ( nilocsivad@hotmail.com ) * */ public final class DealImage { private File folder; public static final String[] ACCEPT_IMG_TYPES = { ".png", ".jpg", ".jpeg" }; public DealImage(String folder) { this.folder = new File(folder); } public void DealImages() throws IOException { for ( File file : this.folder.listFiles() ) { if ( file.isFile() && this.IsAcceptImage(file) ) { this.Write2File(this.Img2Square(file, 200), this.FileSuffix(file), file.getAbsolutePath(), "square"); } } } public boolean IsAcceptImage(File file) { boolean accept = false; String fileName = file.getName(); for ( String type : ACCEPT_IMG_TYPES ) { if ( fileName.endsWith(type) ) { accept = true; break; } } return accept; } public void Cut2Square(final File imgFile, final int sideLen) throws IOException { String formatName = FileSuffix(imgFile); Image img = this.Img2Square(imgFile, sideLen); BufferedImage bufImg = new BufferedImage(sideLen, sideLen, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = bufImg.createGraphics(); // ** 创建画板 g2d.drawImage(img, 0, 0, sideLen, sideLen, null); // ** 把 img(图像) 画到指定位置(x:0, y:0)指定区域(x:sideLen + 0, y:sideLen + 0) g2d.dispose(); String destFile = imgFile.getAbsolutePath() + ".square" + formatName; ImageIO.write(bufImg, formatName.substring(1), new File(destFile)); } /** * 缩小, 缩小比例为 图片大小(宽或高)/sideLen */ private BufferedImage Img2Small(File imgFile, final int sideLen) throws IOException { String formatName = FileSuffix(imgFile); if (formatName.toLowerCase().equals(".jpeg")) { imgFile = RenameJpeg2Jpg(imgFile); formatName = ".jpg"; } BufferedImage img = ImageIO.read(imgFile); int imgWidth = img.getWidth(), imgHeight = img.getHeight(), newWidth = sideLen, newHeight = sideLen; if ( imgHeight > sideLen || imgWidth > sideLen ) { float scale = ( imgWidth > imgHeight ? imgWidth * 0.1f / sideLen : imgHeight * 0.1f / sideLen ) + 0.1f; newWidth = (int) (imgWidth * scale); newHeight = (int) (imgHeight * scale); } BufferedImage bi = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = bi.createGraphics(); g2d.drawImage(img, 0, 0, newWidth, newHeight, null); g2d.dispose(); return bi; } /** * 缩小后到图片变成正方形, 用白色补齐空白区域 */ private BufferedImage Img2Square(File imgFile, int sideLen) throws IOException { Image img = this.Img2Small(imgFile, sideLen); int imgWidth = img.getWidth(null), imgHeight = img.getHeight(null); sideLen = imgWidth > imgHeight ? imgWidth : imgHeight; BufferedImage bufImg = new BufferedImage(sideLen, sideLen, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = bufImg.createGraphics(); g2d.setColor(Color.WHITE); g2d.fillRect(0, 0, sideLen, sideLen); int toX = ( sideLen - imgWidth ) / 2, toY = ( sideLen - imgHeight ) / 2; g2d.drawImage(img, toX, toY, imgWidth, imgHeight, null); g2d.dispose(); return bufImg; } public File RenameJpeg2Jpg(File jpegFile) throws IOException { String imgName = jpegFile.getName(); int idx = imgName.lastIndexOf("."); File destFile = new File(jpegFile.getParentFile(), imgName.substring(0, idx) + ".jpg"); jpegFile.renameTo(destFile); return destFile; } public String FileSuffix(File file) { int idx = file.getName().lastIndexOf("."); return idx > 0 ? file.getName().substring(idx) : ""; } public void Write2File(final BufferedImage img, String fmt, String path, String append) throws IOException { String outFile = path + "." + append + fmt; ImageIO.write(img, fmt.substring(1), new File(outFile)); } public static void main(String[] args) throws IOException { DealImage si = new DealImage("/home/cpu/images/"); si.DealImages(); } }
相关推荐
以下是一些关于Java图片裁切的关键知识点: 1. **IO流处理**:首先,Java中的`java.io`包提供了对文件的读写操作。在上传图片时,我们需要使用输入流(InputStream)读取上传的文件,然后可能需要将图片保存到...
在本文中,我们将深入探讨如何使用JavaScript实现图片的放大、缩小和裁切功能,并结合ImageMagick组件在后台处理图片。这些技术对于前端开发者来说至关重要,因为它们允许用户交互式地编辑图片,同时通过后端服务...
本篇文章主要介绍了vue实现裁切图片同时实现放大、缩小、旋转功能,分享给大家,具体如下: 实现效果: 裁切指定区域内的图片 旋转图片 放大图片 输出bolb 格式数据 提供给 formData 对象 效果图 ...
JSP上传图片并裁切及放大显示,常用的JSP程序,看到有不少的图片上传、缩放及裁切程序,手痒就写了个,网上见的多的都是ASP/ASP.NET、php的,还没有发现有JSP的,写时候参数程序比较少,因此程序并不完善,只是实现...
4. **裁切图片**:根据设定的参数,调用裁切函数,如imagecopyresampled()或Imagick::cropImage()。 5. **保存裁切结果**:裁剪后的新图需要保存为新的文件,使用imagejpeg()、imagepng()等函数写入文件。 6. **显示...
用ASP+ImageMagik组件制作的在线照片编辑工具程序利用Js进行图片 放大,缩小,裁切工具,后台采用注明ImageMagik组件处理图片。工具使用范围:方便制作论坛头像,在没有图片处'用ASP+ImageMagik组件制作的在线照片...
二、Java 图片裁切 在Java中,我们可以利用java.awt和javax.imageio包中的类来处理图片。Image类是Java处理图像的基础,而BufferedImage提供了更丰富的操作接口。裁切图片时,可以通过定义Image的子类Rectangle2D来...
9. **ZoomImageDemo**:这可能是项目中的一个核心类或者页面,用于实现图片的放大、缩小和裁剪操作。它可能包含了展示图片、获取用户裁剪选择、执行裁剪操作等功能。 综上所述,"jsp图片裁切源码(仿开心网)"涉及...
Vue3+TS图片裁切组件,在main.ts中全局引入 import ImageCrop from "@/components/image-crop/" const app = createApp(App) app.use(ImageCrop); app.mount('#app ') 在对应的页面使用 裁切比例,不用此参数自由...
在图片裁切场景中,我们通常会使用jQuery的插件,如JQuery Cropper。这个插件允许用户在网页上自由选择图片的裁剪区域,提供了拖动、缩放、旋转等多种操作,用户可以调整裁剪框的大小和位置,以达到理想的效果。...
本项目“MFC 鼠标选定显示范围,图片放大缩小,带左右滚动条显示”就是这样一个示例,它实现了用户通过鼠标选择图像的特定区域,然后该区域会被放大显示,并且提供了左右滚动条以便浏览放大后的图像。 1. **MFC框架...
【图像裁切及上传技术详解】 在网页应用中,图像处理是一项不可或缺的功能,特别是涉及到用户上传个人头像、商品图片等场景时。本项目基于JSP、JQuery、CropZoom以及JAVA技术,提供了一套完整的图片上传和裁切解决...
在网页开发中,图片处理是不可或缺的一部分,尤其是随着用户体验需求的提升,图片的裁切、拖放和缩放功能越来越受到重视。JavaScript作为客户端脚本语言,为实现这些特效提供了强大的支持。本文将深入探讨如何利用...
在Java编程语言中,图片剪切是一项常见的任务,特别是在图像处理和图形用户界面的应用中。本文将深入探讨如何使用Java实现快速的图片剪切功能,以及相关的核心知识点。 首先,我们要明白图片剪切的基本概念。图片...
在数字媒体领域,图片自由裁切是一项常见的图像处理任务,它允许用户根据需求调整图片的尺寸、比例或焦点,以适应不同的应用场景。本教程将深入探讨图片自由裁切的原理、工具以及实际操作技巧。 一、图片裁切的必要...
HTML5图片放大 图片裁切 动画虚线框示例,测试需要在服务器环境下进行,不能直接双击打开HTML。如演示效果所示,图片是经过放大后,再进行裁切的,本地客户端环境,需要IE9、火狐、chrome等浏览器。
ajax+js+asp+aspjpeg实现剪切图片、拖拽图片、缩放图片、裁切图片 主要功能: 加载服务器上的图片,用户可以自定义图片的大小,拖拽,缩放,裁切,预览等效果! 可以作为自定义头像功能使用! 备注:在这里我要向...
《图片在线裁切工具ZoomImageDemo详解》 在数字化时代,图片处理技术变得越来越重要,尤其是在网络应用中,用户往往需要对图片进行裁剪、调整大小等操作以满足不同的需求。今天我们将深入探讨一个名为...
在IT领域,图片上传裁切功能是Web应用和移动应用中常见的用户交互元素,它允许用户在上传图片之前或之后进行自由裁剪,以确保图片符合特定尺寸或比例要求。这个功能广泛应用于社交媒体、电子商务、内容编辑平台等...