求一js代码 用于在Gridview中显示缩略图 图片较大 要缩小真实大小生成新的小图片 求一js代码 用于在Gridview中显示缩略图 图片较大 要缩小真实大小生成新的小图片 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用JQ$(document).ready(function(){ $(img).css({width:"100px",height:"100px"});}); 求一js代码JS办不到,只能服务器端解决生成新图片?我来给一个类吧!/** * 产生缩阅图 * @return boolean */ public static void buildSmallPic(File inputFile,File outputFile,int outputWidth,int outputHeight,boolean proportion){ try { if (!inputFile.exists()) return; Image img = ImageIO.read(inputFile); Toolkit toolkit = Toolkit.getDefaultToolkit(); Image srcImage = toolkit.getImage(inputFile.getAbsolutePath()); // 构造Image对象 int width = -1; int height = -1; boolean flag = true; while (flag) { width = srcImage.getWidth(null); // 得到源图宽 height = srcImage.getHeight(null); // 得到源图长 if (width > 0 && height > 0) { flag = false; } else { try { Thread.sleep(10); } catch (Exception e) { e.printStackTrace(); } } } //if(width==outputWidth && height==outputHeight) return ;//相等了 //判断图片格式是否正确 if (img.getWidth(null) == -1) { System.out.println("can't read,retry!" + "<BR>"); return; }else{ if (!outputFile.exists()) { outputFile.createNewFile(); } int newWidth; int newHeight; // 判断是否是等比缩放 if (proportion == true) { // 为等比缩放计算输出的图片宽度及高度 double rate1 = ((double) img.getWidth(null)) / (double) outputWidth + 0.1; double rate2 = ((double) img.getHeight(null)) / (double) outputHeight + 0.1; // 根据缩放比率大的进行缩放控制 double rate = rate1 > rate2 ? rate1 : rate2; newWidth = (int) (((double) img.getWidth(null)) / rate); newHeight = (int) (((double) img.getHeight(null)) / rate); } else { newWidth = outputWidth; // 输出的图片宽度 newHeight = outputHeight; // 输出的图片高度 } BufferedImage tag = new BufferedImage((int)newWidth, (int) newHeight, BufferedImage.TYPE_INT_RGB); /* * Image.SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 * 优先级比速度高 生成的图片质量比较好 但速度慢 */ Graphics2D g = tag.createGraphics(); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); g.drawImage(img.getScaledInstance(newWidth,newHeight,Image.SCALE_SMOOTH),0,0,null); g.dispose(); /*质量不高 /* FileOutputStream out = new FileOutputStream(outputFile); // JPEGImageEncoder可适用于其他图片类型的转换 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(tag); out.close();*/ // FileOutputStream out = new FileOutputStream(outputFile); // JPEGImageEncoder可适用于其他图片类型的转换 //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); ImageWriter writer = null; ImageTypeSpecifier type = ImageTypeSpecifier.createFromRenderedImage(tag); Iterator<ImageWriter> iter = ImageIO.getImageWriters(type,"jpg"); if(iter.hasNext()) { writer=(ImageWriter)iter.next(); } if(writer ==null) { return; } IIOImage iioImage = new IIOImage(tag, null, null); ImageWriteParam param = writer.getDefaultWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); //设置质量(0.1-1) param.setCompressionQuality(1f); ImageOutputStream outputStream = ImageIO.createImageOutputStream(outputFile); writer.setOutput(outputStream); writer.write(null, iioImage, param); outputStream.flush(); outputStream.close(); } } catch (IOException ex) { ex.printStackTrace(); } } float:left onclick失效 求解 一上午了 checkbox选中 正则表达式中的正向预查? 高手们,怎样在不修改页面的情况下让所有页面引用同一个JS? showModalDialog()问题, 在线等~~~! VBScript数组的问题 我想在iframe中动态引入文件。 能用request得到图像表单的值吗??? 我想在日历里显示"农历壬午年(马) 七月十九 ",是怎样做的呢? 请问下 jquery选择器选择了多个元素怎么遍历这些元素 不使用id实现对本tr内的text控制,用jquery,javascript html or js or ajax or php 实现
$(document).ready(function(){
$(img).css({width:"100px",height:"100px"});
});
JS办不到,只能服务器端解决生成新图片?
我来给一个类吧!
/**
* 产生缩阅图
* @return boolean
*/
public static void buildSmallPic(File inputFile,File outputFile,int outputWidth,int outputHeight,boolean proportion){
try {
if (!inputFile.exists()) return;
Image img = ImageIO.read(inputFile);
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image srcImage = toolkit.getImage(inputFile.getAbsolutePath()); // 构造Image对象
int width = -1;
int height = -1;
boolean flag = true;
while (flag) {
width = srcImage.getWidth(null); // 得到源图宽
height = srcImage.getHeight(null); // 得到源图长
if (width > 0 && height > 0) {
flag = false;
} else {
try {
Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
}
}
//if(width==outputWidth && height==outputHeight) return ;//相等了
//判断图片格式是否正确
if (img.getWidth(null) == -1) {
System.out.println("can't read,retry!" + "<BR>");
return;
}else{
if (!outputFile.exists()) {
outputFile.createNewFile();
}
int newWidth; int newHeight;
// 判断是否是等比缩放
if (proportion == true) {
// 为等比缩放计算输出的图片宽度及高度
double rate1 = ((double) img.getWidth(null)) / (double) outputWidth + 0.1;
double rate2 = ((double) img.getHeight(null)) / (double) outputHeight + 0.1;
// 根据缩放比率大的进行缩放控制
double rate = rate1 > rate2 ? rate1 : rate2;
newWidth = (int) (((double) img.getWidth(null)) / rate);
newHeight = (int) (((double) img.getHeight(null)) / rate);
} else {
newWidth = outputWidth; // 输出的图片宽度
newHeight = outputHeight; // 输出的图片高度
}
BufferedImage tag = new BufferedImage((int)newWidth, (int) newHeight, BufferedImage.TYPE_INT_RGB);
/*
* Image.SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的
* 优先级比速度高 生成的图片质量比较好 但速度慢
*/
Graphics2D g = tag.createGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(img.getScaledInstance(newWidth,newHeight,Image.SCALE_SMOOTH),0,0,null);
g.dispose();
/*质量不高
/* FileOutputStream out = new FileOutputStream(outputFile);
// JPEGImageEncoder可适用于其他图片类型的转换
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag);
out.close();*/
// FileOutputStream out = new FileOutputStream(outputFile);
// JPEGImageEncoder可适用于其他图片类型的转换
//JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
ImageWriter writer = null;
ImageTypeSpecifier type = ImageTypeSpecifier.createFromRenderedImage(tag);
Iterator<ImageWriter> iter = ImageIO.getImageWriters(type,"jpg");
if(iter.hasNext()) {
writer=(ImageWriter)iter.next();
}
if(writer ==null) {
return;
}
IIOImage iioImage = new IIOImage(tag, null, null);
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
//设置质量(0.1-1)
param.setCompressionQuality(1f);
ImageOutputStream outputStream = ImageIO.createImageOutputStream(outputFile);
writer.setOutput(outputStream);
writer.write(null, iioImage, param);
outputStream.flush();
outputStream.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}