最近由于硬盘太小,数码照片太多,占了太多空间,写一个批量放缩照片的类!
package com.my.test.image; import java.applet.Applet; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class ImageTool { private Boolean proportion=true; private List fileInList=new ArrayList(); private List fileOutList=new ArrayList(); public Boolean photojob(String inputdir,String outputdir,double bl){ if(!check(inputdir,outputdir,bl)){ return false; } for(int i=0;i<fileInList.size();i++){ start((String)fileInList.get(i),(String)fileOutList.get(i),bl); } return true; } public Boolean start(String in,String out,double bl){ //建立输出文件对象 File file = new File(out); FileOutputStream tempout = null; try { tempout = new FileOutputStream(file); } catch (Exception ex) { System.out.println(ex.toString()); } Image img = null; //用于操作windows的一些组件 Toolkit tk = Toolkit.getDefaultToolkit(); Applet app = new Applet(); MediaTracker mt = new MediaTracker(app); try { img = tk.getImage(in); mt.addImage(img, 0); mt.waitForID(0); } catch (Exception e) { e.printStackTrace(); } if (img.getWidth(null) == -1) { return false; } else { int new_w; int new_h; if (this.proportion == true) { //判断是否是等比缩放. //为等比缩放计算输出的图片宽度及高度 new_w = (int) (((double) img.getWidth(null))*bl); new_h = (int) (((double) img.getHeight(null)) *bl); } else { new_w = 100; //输出的图片宽度 new_h = 100; //输出的图片高度 } BufferedImage buffImg = new BufferedImage(new_w, new_h, BufferedImage.TYPE_INT_RGB); Graphics g = buffImg.createGraphics(); g.setColor(Color.white); g.fillRect(0, 0, new_w, new_h); g.drawImage(img, 0, 0, new_w, new_h, null); g.dispose(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(tempout); try { encoder.encode(buffImg); tempout.close(); } catch (IOException ex) { System.out.println(ex.toString()); } } return true; } public Boolean check(String inputdir,String outputdir,double bl){ //判断放缩比例 if(!checkbl(bl)){ return false; } //判断目录 if(!checkFile( inputdir, outputdir)){ return false; } return true; } //判断目录是否存在,过滤文件名 public Boolean checkFile(String inputdir,String outputdir){ File file=null; File file1=null; try { file = new File(inputdir); } catch (NullPointerException e) { return false; } try { file1 = new File(outputdir); } catch (NullPointerException e) { return false; } if(file.exists()){ if(file.isFile()){ fileInList.add(file.getParent()+"/"+file.getName()); if(file1.isDirectory()){ fileOutList.add(outputdir+"/"+file.getName().split("\\.")[0]+"_out."+file.getName().split("\\.")[1]); }else if(file1.isFile()){ fileOutList.add(file1.getParent()+"/"+file.getName().split("\\.")[0]+"_out."+file.getName().split("\\.")[1]); } }else if(file.isDirectory()){ for(int i=0;i<file.list().length;i++){ if(checkname(file.list()[i])){ fileInList.add(file.getPath()+"/"+file.list()[i]); if(file1.isDirectory()){ fileOutList.add(outputdir+"/"+file.list()[i].split("\\.")[0]+"_out."+file.list()[i].split("\\.")[1]); }else if(file1.isFile()){ fileOutList.add(file1.getParent()+"/"+file.list()[i].split("\\.")[0]+"_out."+file.list()[i].split("\\.")[1]); } } } } }else{ return false; } return true; } //判断放缩比例 public Boolean checkbl(double bl){ if(bl<0){ System.out.println("放缩比例必须大于零!"); return false; } return true; } //过滤扩展名 public Boolean checkname(String name){ if(name.split("\\.")[1].equals("jpg")){ return true; }else if(name.split("\\.")[1].equals("bmp")){ return true; } return false; } public static void main(String[] args) { ImageTool it=new ImageTool(); String in="C:\\Documents and Settings\\All Users\\Documents\\My Pictures\\示例图片"; String out="D:\\temp"; it.photojob(in,out, 0.2); System.out.println("原文件:\n"+in); System.out.println("目标文件:\n"+out); System.out.println("放缩完毕!"); } }
您还没有登录,请您登录后再发表评论
在IT领域,图片放缩是一项基础且重要的技术,它广泛应用于各种软件、网站以及移动应用中。本Demo主要展示了如何实现这一功能,让我们一起深入探讨其中的技术细节。 首先,图片放缩涉及到的主要概念是图像处理,它...
本教程将详细讲解如何实现“手势点击图片放缩”的功能。 首先,我们需要了解手势识别的基本原理。Android系统提供了一套GestureDetector类,用于识别常见的触摸手势,如单击、双击、滑动和缩放。对于图片的缩放,...
Qt QGraphicsView实现图片放缩、鼠标拖动移动、鼠标点位置放大缩小_图片查看.rar 文件大小: 1718087 字节 修改时间: 2024年9月2日, 14:32:55 MD5: DC77C0D16EAF92D9F53957DE19E4BD2C SHA1: 91BF2FF1F7333C1C9F6B69EC...
Medium是一个知名的在线出版平台,它的图片放缩效果以其优雅和流畅而著名。本项目旨在实现一个仿照Medium的图片放缩功能,以提供类似的良好视觉体验。通过分析“仿 Medium 的图片放缩效果,超漂亮.zip”这个压缩包,...
当我们谈论“ZOOMJS仿Medium的图片放缩效果超漂亮”时,我们指的是一个使用JavaScript实现的库,它允许用户在网页上实现类似Medium的优雅图片缩放功能。这种效果为用户提供了一种更加沉浸式的阅读体验,尤其是在查看...
这个压缩包文件“安卓微信相关相关-android仿微信朋友圈图片浏览其中有图片的异步加双击图片放缩点击图片退出当前界面横向滚动图片查看.rar”提供了实现类似微信朋友圈图片浏览功能的代码示例。以下将详细介绍其中...
在安卓平台上,实现类似QQ空间的图片放缩效果是一个常见的需求,这涉及到图像处理和UI交互的技巧。本文将深入探讨如何在Android中创建一个高仿QQ空间的图片放缩功能,以及可能遇到的问题和解决方案。 首先,我们...
图片放缩、旋转、裁剪 for 微信小程序,实现方式是canvas作图 使用方法 下载代码,在微信开发者工具中选择相应包路径,打开后可直接查看 说明 项目基础来自这位同学https://github.com/dlhandsome/we-cropper ,增加...
visual studio环境下的QT实现图片放缩、鼠标拖动移动和鼠标点击位置放大缩小的项目工程文件
仿QQ空间图片放缩查看,点击图片从原位置放大到全屏,后退从全屏缩小到原位置,效果非常好.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
### 图片随鼠标滚轮的转动放缩:JavaScript 实现详解 #### 一、功能概述 在现代网页设计中,用户交互体验变得越来越重要。一个常见的需求是让用户能够通过简单的鼠标滚轮操作来放大或缩小页面中的图片。这种方式...
微信小程序的优势在于它方便快捷、轻量级、跨平台、丰富的推广方式、丰富的功能接口、数据分析与优化、结合微信支付、支持多场景应用、社交功能以及多端同步等。这些优点使得小程序能够满足用户的多种需求,提供更好...
在处理图片放缩时,可能还需要使用纹理映射。首先加载图片,将其转换为OpenGL纹理,然后将纹理应用到几何形状上。放缩图片通常涉及调整纹理坐标或者使用纹理过滤选项(如GL_LINEAR或GL_NEAREST)来控制缩放质量。 ...
在本文中,我们将深入探讨如何在Silverlight应用中实现图片的放大、缩小和移动功能。Silverlight是微软推出的一种富互联网应用程序(RIA)技术,它允许开发者创建具有丰富媒体体验和交互性的Web应用。 首先,我们...
6.需要使用movewindown调整显示控件大小和图片大小一样,你可以使用getShowRect获取图片大小,也可以使用SetShowRect设置显示大小。 7.两个遗憾:1.不能自动调整控件大小到图片,因为我暂时需要,请自行修改;2.。...
SVG编辑器 Qt加C++实现,可放缩的矢量图形编辑器
图片采用抗锯齿防缩方法,让图片放缩后依然清晰 可以定义图片是否有连接 方便网页布局,插入任何图片。 特别提醒:由于flashplayer9 升级了安全策略问题,所以需要保证所有的的文件(包括swfoto.swf 图片...
在WPF中处理图像是一项常见的任务,而图片的放大、缩小和拖动功能则是提高用户体验的重要组成部分。本示例将详细介绍如何在WPF中实现这些功能。 首先,我们需要了解WPF中的Image控件。Image控件是WPF提供的用于显示...
在Java编程语言中,图形显示、移动和缩放是创建可视化应用的重要组成部分。这些功能主要由Java的`java.awt`和`javax.swing`包提供,尤其是`Graphics2D`类,它扩展了`Graphics`类,增加了对矢量图形的支持,使我们...
相关推荐
在IT领域,图片放缩是一项基础且重要的技术,它广泛应用于各种软件、网站以及移动应用中。本Demo主要展示了如何实现这一功能,让我们一起深入探讨其中的技术细节。 首先,图片放缩涉及到的主要概念是图像处理,它...
本教程将详细讲解如何实现“手势点击图片放缩”的功能。 首先,我们需要了解手势识别的基本原理。Android系统提供了一套GestureDetector类,用于识别常见的触摸手势,如单击、双击、滑动和缩放。对于图片的缩放,...
Qt QGraphicsView实现图片放缩、鼠标拖动移动、鼠标点位置放大缩小_图片查看.rar 文件大小: 1718087 字节 修改时间: 2024年9月2日, 14:32:55 MD5: DC77C0D16EAF92D9F53957DE19E4BD2C SHA1: 91BF2FF1F7333C1C9F6B69EC...
Medium是一个知名的在线出版平台,它的图片放缩效果以其优雅和流畅而著名。本项目旨在实现一个仿照Medium的图片放缩功能,以提供类似的良好视觉体验。通过分析“仿 Medium 的图片放缩效果,超漂亮.zip”这个压缩包,...
当我们谈论“ZOOMJS仿Medium的图片放缩效果超漂亮”时,我们指的是一个使用JavaScript实现的库,它允许用户在网页上实现类似Medium的优雅图片缩放功能。这种效果为用户提供了一种更加沉浸式的阅读体验,尤其是在查看...
这个压缩包文件“安卓微信相关相关-android仿微信朋友圈图片浏览其中有图片的异步加双击图片放缩点击图片退出当前界面横向滚动图片查看.rar”提供了实现类似微信朋友圈图片浏览功能的代码示例。以下将详细介绍其中...
在安卓平台上,实现类似QQ空间的图片放缩效果是一个常见的需求,这涉及到图像处理和UI交互的技巧。本文将深入探讨如何在Android中创建一个高仿QQ空间的图片放缩功能,以及可能遇到的问题和解决方案。 首先,我们...
图片放缩、旋转、裁剪 for 微信小程序,实现方式是canvas作图 使用方法 下载代码,在微信开发者工具中选择相应包路径,打开后可直接查看 说明 项目基础来自这位同学https://github.com/dlhandsome/we-cropper ,增加...
visual studio环境下的QT实现图片放缩、鼠标拖动移动和鼠标点击位置放大缩小的项目工程文件
仿QQ空间图片放缩查看,点击图片从原位置放大到全屏,后退从全屏缩小到原位置,效果非常好.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
### 图片随鼠标滚轮的转动放缩:JavaScript 实现详解 #### 一、功能概述 在现代网页设计中,用户交互体验变得越来越重要。一个常见的需求是让用户能够通过简单的鼠标滚轮操作来放大或缩小页面中的图片。这种方式...
微信小程序的优势在于它方便快捷、轻量级、跨平台、丰富的推广方式、丰富的功能接口、数据分析与优化、结合微信支付、支持多场景应用、社交功能以及多端同步等。这些优点使得小程序能够满足用户的多种需求,提供更好...
在处理图片放缩时,可能还需要使用纹理映射。首先加载图片,将其转换为OpenGL纹理,然后将纹理应用到几何形状上。放缩图片通常涉及调整纹理坐标或者使用纹理过滤选项(如GL_LINEAR或GL_NEAREST)来控制缩放质量。 ...
在本文中,我们将深入探讨如何在Silverlight应用中实现图片的放大、缩小和移动功能。Silverlight是微软推出的一种富互联网应用程序(RIA)技术,它允许开发者创建具有丰富媒体体验和交互性的Web应用。 首先,我们...
6.需要使用movewindown调整显示控件大小和图片大小一样,你可以使用getShowRect获取图片大小,也可以使用SetShowRect设置显示大小。 7.两个遗憾:1.不能自动调整控件大小到图片,因为我暂时需要,请自行修改;2.。...
SVG编辑器 Qt加C++实现,可放缩的矢量图形编辑器
图片采用抗锯齿防缩方法,让图片放缩后依然清晰 可以定义图片是否有连接 方便网页布局,插入任何图片。 特别提醒:由于flashplayer9 升级了安全策略问题,所以需要保证所有的的文件(包括swfoto.swf 图片...
在WPF中处理图像是一项常见的任务,而图片的放大、缩小和拖动功能则是提高用户体验的重要组成部分。本示例将详细介绍如何在WPF中实现这些功能。 首先,我们需要了解WPF中的Image控件。Image控件是WPF提供的用于显示...
在Java编程语言中,图形显示、移动和缩放是创建可视化应用的重要组成部分。这些功能主要由Java的`java.awt`和`javax.swing`包提供,尤其是`Graphics2D`类,它扩展了`Graphics`类,增加了对矢量图形的支持,使我们...