<div id="FileList">
<input type=file name="uploadFile[0].file" onkeydown="return false" id="file"/>
<input type="button" value=" 添加 " onclick="Addfile_()" />
</div>
//添加上传照片的浏览框
var count = 0;
function Addfile_(){
if(count > 3)
{
alert("一次最多上传5个照片!");
return;
}
count += 1;
var FileList = document.getElementById("FileList");
var div = document.createElement("div");
var inputTxt = document.createElement("input"); //上传照片浏览框
inputTxt.type = "file";
inputTxt.name = "uploadFile["+count+"].file";
inputTxt.onkeydown="return false";
inputTxt.id="file";
var space = document.createTextNode(" ");//创建一空格
var btn = document.createElement("input"); //删除照片按钮
btn.type = "button";
btn.value = " 删除 ";
btn.className = "form_1" ;
btn.onclick = function(){
this.parentNode.parentNode.removeChild(this.parentNode);
count -= 1;
}
var brEle = document.createElement("br");
div.appendChild(inputTxt);
div.appendChild(space);
div.appendChild(btn);
div.appendChild(brEle);
FileList.appendChild(div);
}
//验证
function isSameName(pixname)
{
var s=0;
var filename = new Array();
var frm = document.getElementsByTagName('input');
for(var i=0;i<frm.length;i++){
if(frm[i].type == 'file' && frm[i].name.indexOf(pixname)!=-1)
{
var iname = frm[i].value;
var string_arr = iname.split("\\");
filename[s] = string_arr[string_arr.length-1];
s++;
if(iname==''){
alert("照片不能为空!");
return false;
}
}
}
for(var j=0;j<filename.length;j++)
{
var re=/(.*)\.(jpg|bmp|gif)$/;
if(!re.exec(filename[j]))
{
alert("照片"+(j+1)+"格式不正确!");
return false;
}
}
for(var j=0;j<filename.length-1;j++){
var uname = filename[j];
for(var k=j+1;k<filename.length;k++)
{
var sname = filename[k];
if (uname == sname)
{
alert("照片"+(j+1)+"与"+"照片"+(k+1)+"重名!");
return false;
}
}
}
return true;
}
public String optUploadFile(ActionForm Form);
List<FormFile> fileList = new ArrayList<FormFile>();
if (form.getMultipartRequestHandler() != null)
{
/**
* 这里使用的是struts的 MultipartRequestHandler 得到页面传过来的所有file类型的表单元素
*/
Hashtable fileht = form.getMultipartRequestHandler().getFileElements();
for (Enumeration e = fileht.keys(); e.hasMoreElements();)
{
String key = (String) e.nextElement();
FormFile file = (FormFile) fileht.get(key);
fileList.add(file);
}
for (FormFile file : fileList)
{
Date time = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-ddHHmmssMM");
String date = formatter.format(time).replace("", "");
if (file == null){
continue;
}
//得到上传文件的后缀名
String type=file.getFileName().substring(file.getFileName().lastIndexOf("."), file.getFileName().length());
try
{
File ff = new File("/路径");
if(!ff.exists()){
ff.mkdirs();
}
writeFile("/路径/文件名", file.getInputStream());
//将照片按尺寸缩放*/
ImageDealWith.imageToDeal("/路径/"+"文件名");
Thread.sleep(1000);
message="success";
} catch (Exception e)
{
e.printStackTrace();
}
}
}
public static File writeFile(String path, InputStream is)
{
File f = createFileIfNotExist(path);
byte[] buffer = new byte[8192];
OutputStream fos = null;
int readByte = 0;
try
{
fos = new FileOutputStream(f);
while ((readByte = is.read(buffer, 0, 8192)) != -1)
{
fos.write(buffer, 0, readByte);
}
fos.flush();
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
} finally
{
try
{
if (is != null)
{
is.close();
is = null;
}
if (fos != null)
{
fos.close();
fos = null;
}
} catch (IOException e)
{
e.printStackTrace();
}
}
return f;
}
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.io.*;
import javax.imageio.ImageIO;
import org.apache.commons.validator.GenericValidator;
public class ImageDealWith
{
private static String types = "jpg|gif|jpeg|png|bmp";
/** */
/**
* 图像切割
*
* @param srcImageFile 源图像地址
* @param descDir 切片目标文件夹
* @param destWidth 目标切片宽度
* @param destHeight 目标切片高度
*/
public static void cut(String srcImageFile, String descDir, int destWidth, int destHeight)
{
try
{
Image img;
ImageFilter cropFilter;
// 读取源图像
BufferedImage bi = ImageIO.read(new File(srcImageFile));
int srcWidth = bi.getHeight(); // 源图宽度
int srcHeight = bi.getWidth(); // 源图高度
if (srcWidth > destWidth && srcHeight > destHeight)
{
Image image = bi.getScaledInstance(srcWidth, srcHeight,
Image.SCALE_DEFAULT);
destWidth = 200; // 切片宽度
destHeight = 150; // 切片高度
int cols = 0; // 切片横向数量
int rows = 0; // 切片纵向数量
// 计算切片的横向和纵向数量
if (srcWidth % destWidth == 0)
{
cols = srcWidth / destWidth;
} else
{
cols = (int) Math.floor(srcWidth / destWidth) + 1;
}
if (srcHeight % destHeight == 0)
{
rows = srcHeight / destHeight;
} else
{
rows = (int) Math.floor(srcHeight / destHeight) + 1;
}
// 循环建立切片
// 改进的想法:是否可用多线程加快切割速度
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
// 四个参数分别为图像起点坐标和宽高
// 即: CropImageFilter(int x,int y,int width,int height)
cropFilter = new CropImageFilter(j * 200, i * 150, destWidth, destHeight);
img = Toolkit.getDefaultToolkit().createImage(
new FilteredImageSource(image.getSource(), cropFilter));
BufferedImage tag = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(img, 0, 0, null); // 绘制缩小后的图
g.dispose();
// 输出为文件
ImageIO.write(tag, "JPEG", new File(descDir
+ "pre_map_"
+ i
+ "_"
+ j
+ ".jpg"));
}
}
}
} catch (Exception e)
{
e.printStackTrace();
}
}
/** */
/**
* 图像类型转换 GIF->JPG GIF->PNG PNG->JPG PNG->GIF(X)
*/
public static void convert(String source, String result)
{
try
{
File f = new File(source);
f.canRead();
f.canWrite();
BufferedImage src = ImageIO.read(f);
ImageIO.write(src, "JPG", new File(result));
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/** */
/**
* 彩色转为黑白
*
* @param source
* @param result
*/
public static void gray(String source, String result)
{
try
{
BufferedImage src = ImageIO.read(new File(source));
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorConvertOp op = new ColorConvertOp(cs, null);
src = op.filter(src, null);
ImageIO.write(src, "JPEG", new File(result));
} catch (IOException e)
{
e.printStackTrace();
}
}
/**
* @function:修改文件名为:原文件名+"_b"
* @param resultPath
* @return
* @author: Guanshengjun 2008-11-28 上午08:50:33
*/
public static String returnNewFileName(String resultPath, String suffix)
{
String result = "";// 修改后的文件名称
if (!GenericValidator.isBlankOrNull(resultPath))
{
int index = resultPath.lastIndexOf(".");// 获得文件后缀名的位置
if (index > 0)
{// 组装改名之后的新文件名称
result = resultPath.substring(0, index)
+ suffix
+ "."
+ resultPath.substring(index + 1);
return result;
}
}
return resultPath;
}
/**
* @function:图片缩放
* @param widthL :缩放之后图片宽度
* @param s_resultPath :缩放后的图片全路径
* @param b_resultPath :原图片
* @throws IOException
* @author: Guanshengjun 2008-11-28 上午08:44:09
*/
public static void changeImageSize(Integer widthL, String s_resultPath, String b_resultPath)
throws IOException
{
try
{
BufferedImage src = ImageIO.read(new File(b_resultPath)); // 读入文件
Integer width = src.getWidth();// 图片原始宽度
Integer height = src.getHeight();// 图片原始高度
double w ;// widthL为要缩放的宽度,计算缩放比例
if(width>=height){
w=(widthL.intValue()*1.0)/width.intValue();
width=widthL;
height=(int) Math.ceil(height*w);
}else{
w=(widthL.intValue()*1.0)/height.intValue();
height=widthL;
width=(int) Math.ceil(width*w);
}
Image image = src.getScaledInstance(width, height, Image.SCALE_SMOOTH);
BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(image, 0, 0, null); // 绘制缩小后的图
g.dispose();
ImageIO.write(tag, "JPEG", new File(s_resultPath));// 输出到文件流
} catch (Exception e)
{
e.printStackTrace();
}
}
public static void imageToDeal(String imagePath)
{
String image_b = "";// 大图片名称
String nameExt = "";// 文件扩展名
File file = new File(imagePath);
if (file.exists())
{
if (!file.isDirectory())
{
nameExt = file.getName().substring(file.getName().lastIndexOf(".") + 1,
file.getName().length());
if (types.indexOf(nameExt.toLowerCase()) != -1)
{
String[] xmlPicName = imageNameSuffix(ConstantDefine.PIC_DEAL_SUFFIX);
if (xmlPicName != null)
{
int end = xmlPicName.length / 2;
String origName = ""; // 原图路径
String newName = "";// 新生成图的路径
for (int i = 0; i < end; i++)
{
image_b = returnNewFileName(imagePath, xmlPicName[i * 2]); // 获得大图片名称
File b_file = new File(image_b);
newName = image_b;
origName=imagePath;
// 缩小图片大小:宽,高,上传服务器路径
try
{
changeImageSize(
Integer.parseInt(xmlPicName[i * 2 + 1]), newName,
origName);
} catch (Exception e)
{
b_file.renameTo(file);
e.printStackTrace();
}
}
}
}
}
}
}
private static String[] imageNameSuffix(String pathName)
{
String name = XmlConfigurationHelper.getParameter(pathName);
if (GenericValidator.isBlankOrNull(name))
{
return null;
}
String[] imageName = name.split("\\|");
return imageName;
}
}
- 大小: 3.4 KB
分享到:
相关推荐
在实际应用中,可能需要降低图片分辨率以适应网络展示,或者压缩图片大小以节省存储空间。程序的执行流程可能包括以下步骤: 1. 图片读取:程序首先读取用户指定的图片文件,将其加载到内存中。 2. 分辨率调整:...
"图片批量压缩工具.zip" 提供了一种高效的方法来减小图片文件的大小,同时保持其原有的分辨率不变。这在存储、传输或上传图片时具有显著的优势,因为大尺寸的图片往往占用过多的空间,导致存储和分享变得困难。 ...
例如,网站管理员需要快速压缩大量的图片以加快网页加载速度,摄影师则可能需要批量压缩图片以便上传到图库平台。在这些场景中,使用JPGCompact20这样的工具,可以快速有效地处理大批量的图片,节省时间和精力。 ...
4. **移动设备** - 在手机或平板电脑上,压缩图片可以提高存储效率,延长设备的使用寿命。 ### 工具选择与使用 "图片批量压缩工具"这样的软件,可能提供了以下功能: - 自定义压缩设置,如压缩等级、输出分辨率、...
一般来说,用户只需选择包含待压缩图片的文件夹,设置所需的压缩级别、尺寸参数,然后点击开始,软件就能自动处理所有图片。其中,“默认压缩”通常已经考虑了平衡图片质量和文件大小的关系,但用户也可以根据实际...
而提及“微信文件”,意味着该工具特别适合处理从微信接收或发送的图片,因为微信对单个文件大小有限制,压缩图片能确保顺利传输。 标签“图片”、“批量处理”、“微信图片”、“图片压缩”和“照片处理”进一步...
在网页设计、社交媒体分享、存储空间有限或者上传速度有限的场景下,图片批量压缩显得尤为重要。 图片的体积主要由其分辨率、颜色深度和所使用的压缩算法决定。常见的图片格式有JPEG、PNG、GIF等,每种格式都有其...
本资源"图片格式分辨率批量转换.rar"提供了解决这一问题的工具或方法,使得用户可以高效地处理大量图片,无需逐一手动操作。下面将详细介绍关于图片格式和分辨率转换的知识点,以及批量处理的实用技巧。 1. 图片...
ImageTuner就是这样一款软件,它能够帮助用户批量修改图片、进行压缩和格式转换,极大地提高了工作效率。 首先,让我们来了解一下ImageTuner的核心功能。批量修改图片是其主要特性之一,无论是调整大小、旋转角度...
JPG图片批量压缩器是一种专门针对JPG格式图片设计的工具,它的主要功能是将一组JPG图片在不失真或微小失真的情况下,调整其文件大小,以达到节省存储空间、提高上传速度或满足特定文件大小限制的目的。这类软件通常...
在IT领域,图片批量压缩软件是一种非常实用的工具,它能帮助用户快速、高效地减小图片文件的大小,尤其适合处理大量图片的情况。在现代数字生活中,我们经常需要上传图片到社交媒体、邮件或者网络存储服务,而这些...
而超大照片批量压缩工具能够一次性处理数十甚至数百张图片,大幅提升了操作效率,节省了宝贵的时间,使得批量压缩图片变得如同喝水吃饭一样简单。 压缩比是衡量压缩工具优劣的一个重要指标,也是超大照片批量压缩...
标题中的“可以把图片瞬间压缩成自己想要的分辨率和大小的一个东西”指的是一个图像处理软件或在线服务,能够快速调整图片的尺寸和文件大小以满足特定需求。这种工具通常使用优化算法来减小图像数据量,同时保持可...
《PhotoMaster图片高质量批量压缩详解》 在当前数字化时代,图片处理已经成为日常生活和工作中不可或缺的一部分。无论是摄影师、设计师,还是普通用户,我们都可能面临大量图片需要处理的情况,尤其是在存储和分享...
批量图片压缩工具,如“批量图片压缩软”或本例中的“PhotoMaster”,为用户提供了高效处理大量图片的能力,节省存储空间,加快上传速度,同时保持图片质量。以下是关于批量图片压缩和“PhotoMaster”软件的一些详细...
"最好的GIF,JPG,PNG批量修改大小尺寸压缩图片的工具集共5个"这个资源提供了高效解决方案,帮助用户快速优化这些常见格式的图片,以适应不同的应用场景。 1. **GIF** 格式:GIF是一种支持动画的图像格式,广泛用于...
标题提到的“图片压缩软件(免安装)”是一款无需安装即可使用的轻量级工具,专为方便用户批量压缩图片设计,旨在节省存储空间,加快上传和下载速度。这款软件小巧玲珑,易于操作,适合那些希望快速有效地优化图片...
描述中反复提及“图片批量处理软件”,强调了其在处理不同大小图片时的灵活性,这意味着软件应具备适应不同分辨率和像素图片的能力。 首先,我们关注到压缩包中的`imgbatsetup.exe`文件,这很可能是该图片批量处理...
对于那些需要上传到网站或移动设备的图片,批量缩小功能尤其有用,因为这可以减少上传时间和数据占用。 在图片缩小的过程中,软件可能会使用几种不同的方法来实现尺寸和体积的减小。其中最常见的方法是通过改变像素...
"批量压缩图片"是这个项目的核心特性。在网站上传图片时,如果图片文件过大,可能导致加载速度慢,影响用户体验,甚至超过服务器或平台允许的上传限制。因此,该应用提供了批量处理图片的功能,可以一次性对多张图片...