- 浏览: 129424 次
- 性别:
- 来自: 齐齐哈尔滨
文章分类
最新评论
-
sunstar356:
不错 有帮助
Java反射实体类属性(get ,set方法) -
DarkWingBoy:
好多银行网站都是SSH框架做的吧。。。
SSH框架的瓶颈在哪里? -
OnePiece_2012:
很好 多谢了
中科软面试笔试题 -
hzw2312:
.......!
够给力!
JavaScript 获得 汉字 的 完整 拼音 -
tkgguter88:
初学者。谢谢分享
JavaScript 获得 汉字 的 完整 拼音
package com.mxo9.b2c.service.administration.impl.goodstrading.goods; import java.applet.Applet; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.MediaTracker; import java.awt.image.BufferedImage; import java.awt.image.ConvolveOp; import java.awt.image.Kernel; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class AlterUploadImage { String inputDir; //源图片的绝对路径,不包含图片的文件名 String outputDir; //目标图片的绝对路径,不包含图片的文件名 String inputFileName; //源图片文件名 String outputFileName; //目标图片的文件名 int outputWidth; //目标图片的宽 int outputHeight; //目标图片的高 boolean proportion = true; //是否等比例缩放 private String inputFileUrl;//源图片的绝对路径,包含文件名 private String outputFileUrl;//目标图片的绝对路径,包含文件名 private String tempUrl; /** * 初始化修改图片大小的参数 * @param inputDir 源图片的绝对路径,不包含图片的文件名 * @param outputDir 目标图片的绝对路径,不包含图片的文件名 * @param inputFileName 源图片文件名 * @param outputFileName 目标图片的文件名 * @param outputWidth 目标图片的宽 * @param outputHeight 目标图片的高 * @param proportion 是否等比例缩放 */ public AlterUploadImage(String inputDir, String outputDir, String inputFileName, String outputFileName, int outputWidth, int outputHeight, boolean proportion) { this.inputDir=inputDir; this.outputDir=outputDir; this.inputFileName= inputFileName; this.outputFileName=outputFileName; this.outputWidth=outputWidth; this.outputHeight=outputHeight; this.proportion=proportion; } public AlterUploadImage() { inputDir=""; outputDir=""; inputFileName=""; outputFileName=""; outputWidth=100; outputHeight=100; proportion=true; } public boolean alterImageSize() throws IOException { //构造源、目标图片的路径 inputFileUrl=inputDir+inputFileName; outputFileUrl=outputDir+outputFileName; createDir(outputDir); try { Image image = javax.imageio.ImageIO.read(new File(inputFileUrl)); int imageWidth = image.getWidth(null); int imageHeight = image.getHeight(null); float scale = getRatio(imageWidth,imageHeight,outputWidth,outputHeight); imageWidth = (int)(scale*imageWidth); imageHeight = (int)(scale*imageHeight); image = image.getScaledInstance(imageWidth, imageHeight, Image.SCALE_AREA_AVERAGING); // Make a BufferedImage from the Image. BufferedImage mBufferedImage = new BufferedImage(imageWidth, imageHeight,BufferedImage.TYPE_INT_RGB); Graphics2D g2 = mBufferedImage.createGraphics(); g2.drawImage(image, 0, 0,imageWidth, imageHeight, Color.white,null); g2.dispose(); float[] kernelData2 = {-0.125f,-0.125f,-0.125f,-0.125f,2,-0.125f,-0.125f,-0.125f,-0.125f}; Kernel kernel = new Kernel(3, 3, kernelData2); ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null); mBufferedImage = cOp.filter(mBufferedImage, null); FileOutputStream out = new FileOutputStream(outputFileUrl); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(mBufferedImage); out.close(); return true; }catch (Exception ioe){ return false; } finally{ } //return ThumbnailUtil.creatThumbnail(inputFileUrl, outputFileUrl, outputWidth, outputHeight); // File fileOut = new File(tempUrl); // File fileIn = new File(inputFileUrl); // FileOutputStream tempout = null; // try { // tempout = new FileOutputStream(fileOut); // } catch (Exception ex) { // System.out.println(ex.toString()); // } // Image img = null; // Applet app = new Applet(); // MediaTracker mt = new MediaTracker(app); // try { // img = javax.imageio.ImageIO.read(fileIn); // 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) {//判断是否等比例缩放 // //计算比率 // 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; // new_w = (int) (((double) img.getWidth(null)) / rate); // new_h = (int) (((double) img.getHeight(null)) / rate); // } else { // new_w = outputWidth; //宽 // new_h = outputHeight; //高 // } // 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()); // } // } // createThumbImg(outputWidth,outputHeight); // fileOut.delete(); // return true; } public static float getRatio(int width,int height,int maxWidth,int maxHeight){ float Ratio = 1.0f; float widthRatio ; float heightRatio ; widthRatio = (float)maxWidth/width; heightRatio = (float)maxHeight/height; if(widthRatio<1.0 || heightRatio<1.0){ Ratio = widthRatio<=heightRatio?widthRatio:heightRatio; } return Ratio; } //文亮,2009/07/15 public boolean alterImageSizeForFriendLink() throws IOException { //构造源、目标图片的路径 inputFileUrl=inputDir+inputFileName; outputFileUrl=outputDir+outputFileName; tempUrl=outputDir+outputFileName; createDir(tempUrl); File fileOut = new File(tempUrl); File fileIn = new File(inputFileUrl); FileOutputStream tempout = null; try { tempout = new FileOutputStream(fileOut); } catch (Exception ex) { System.out.println(ex.toString()); } Image img = null; Applet app = new Applet(); MediaTracker mt = new MediaTracker(app); try { img = javax.imageio.ImageIO.read(fileIn); 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) {//判断是否等比例缩放 //计算比率 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; new_w = (int) (((double) img.getWidth(null)) / rate); new_h = (int) (((double) img.getHeight(null)) / rate); } else { new_w = outputWidth; //宽 new_h = outputHeight; //高 } 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; } //文亮,2009/07/15,图片批量处理 public boolean alterImageSizeForPicBatch() throws IOException { //构造源、目标图片的路径 inputFileUrl=inputDir+inputFileName; outputFileUrl=outputDir+outputFileName; tempUrl=outputDir+"temp"+outputFileName; createDir(tempUrl); File fileOut = new File(tempUrl); File fileIn = new File(inputFileUrl); FileOutputStream tempout = null; try { tempout = new FileOutputStream(fileOut); } catch (Exception ex) { System.out.println(ex.toString()); } Image img = null; Applet app = new Applet(); MediaTracker mt = new MediaTracker(app); try { img = javax.imageio.ImageIO.read(fileIn); 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) {//判断是否等比例缩放 //计算比率 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; new_w = (int) (((double) img.getWidth(null)) / rate); new_h = (int) (((double) img.getHeight(null)) / rate); } else { new_w = outputWidth; //宽 new_h = outputHeight; //高 } 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()); } } //createThumbImg(outputWidth,outputHeight); //fileOut.delete(); return true; } /** * 该方法用于对生成的图片进一步处理,处理的要求就是创建一个高度为参数outputHeight宽度为outputWidth的图像,其背景色为白色,然后将生成的图片放在该图像的中央 * 以创建一张新图片 * @param width 新图片的宽度 * @param height 新图片的高度 * @throws IOException */ public void createThumbImg(int width,int height) throws IOException{ int startX=0; int startY=0; int[] ImageArrayOne=new int[width*height]; for(int i=0;i<ImageArrayOne.length;i++){ ImageArrayOne[i]=Color.WHITE.getRGB(); } //对第二张图片做相同的处理 File fileTwo = new File(tempUrl); BufferedImage ImageTwo = ImageIO.read(fileTwo); int imgWidth = ImageTwo.getWidth();//图片宽度 int imgHeight = ImageTwo.getHeight();//图片高度 int[] ImageArray = new int[imgWidth*imgHeight]; ImageArray = ImageTwo.getRGB(0,0,imgWidth,imgHeight,ImageArray,0,imgWidth); startX=(width-imgWidth)/2; startY=(height-imgHeight)/2; //生成新图片 BufferedImage ImageNew = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); ImageNew.setRGB(0,0,width,height,ImageArrayOne,0,width);//设置背景色为白色 ImageNew.setRGB(startX,startY,imgWidth,imgHeight,ImageArray,0,imgWidth);//将缩略图置于最上面 File outFile = new File(outputFileUrl); ImageIO.write(ImageNew, outputFileUrl.substring(outputFileUrl.lastIndexOf(".")+1), outFile);//写图片 } private void createDir(String path){ String realPath; try{ realPath=path.substring(0,path.lastIndexOf("/")); } catch(Exception e){ realPath=path.substring(0,path.lastIndexOf("\\")); } File dir=new File(realPath); dir.mkdirs(); } public String getInputDir() { return inputDir; } public void setInputDir(String inputDir) { this.inputDir = inputDir; } public String getOutputDir() { return outputDir; } public void setOutputDir(String outputDir) { this.outputDir = outputDir; } public String getInputFileName() { return inputFileName; } public void setInputFileName(String inputFileName) { this.inputFileName = inputFileName; } public String getOutputFileName() { return outputFileName; } public void setOutputFileName(String outputFileName) { this.outputFileName = outputFileName; } public int getOutputWidth() { return outputWidth; } public void setOutputWidth(int outputWidth) { this.outputWidth = outputWidth; } public int getOutputHeight() { return outputHeight; } public void setOutputHeight(int outputHeight) { this.outputHeight = outputHeight; } public boolean isProportion() { return proportion; } public void setProportion(boolean proportion) { this.proportion = proportion; } public String getInputFileUrl() { return inputFileUrl; } public void setInputFileUrl(String inputFileUrl) { this.inputFileUrl = inputFileUrl; } public String getOutputFileUrl() { return outputFileUrl; } public void setOutputFileUrl(String outputFileUrl) { this.outputFileUrl = outputFileUrl; } }
发表评论
-
Android原理揭秘系列之VacantCell缓存
2011-09-08 17:01 946操作过Android手机的朋友应该对在待机界面拖动图标的交互效 ... -
Hibernate 疑难杂症
2011-09-06 13:44 966作者:小生、我怕怕 网址:http://www.apk ... -
APKBank.NET 安卓银行隆重上线运营。
2011-09-01 10:10 935安卓银行(APKBank.NET)于2011年9月1 ... -
深入探讨 Java 类加载器
2011-08-17 13:43 985作者:小生、我怕怕; Email:17zouguo@si ... -
navicat Oracle Instant Client Light: unsupported server character set CHS16GBK解决
2011-06-28 12:10 1577Navicat 连接 Oracle 出现 Instant Cl ... -
根据明暗度分别加不同的水印
2011-06-02 15:12 831package image; import jav ... -
用Spring JMS使异步消息变得简单
2011-04-21 13:00 1336用Spring JMS使异步消息变得简单 ... -
通过Google获取天气预报信息
2011-04-19 16:31 1208Google提供获取天气预报信息的接口: http://ww ... -
Java堆和栈的区别
2011-04-19 15:11 801栈与堆都是Java用来在Ram ... -
解决办法:Access restriction: The type JPEGImageEncoder is not accessible due to rest
2011-04-15 13:20 1089在Eclipse中处理图片,需要引入两个包:import co ... -
Spring 3.0 注解注入详解
2011-04-12 14:48 12475一、各种注解方式 1.@Aut ... -
Spring事务配置的五种方式
2011-04-12 10:23 738前段时间对Spring ... -
Spring3.0+Struts2.1.8+Hibernate3.5整合
2011-04-02 10:03 1119Spring3.0+Struts2.1.8+Hibernate ... -
Java实现远程屏幕监视
2011-03-16 10:49 1153远程屏幕监视使 ... -
图片的切割和缩略
2011-03-02 18:56 816package com.supben.util; imp ... -
Java 图片水印+文字水印+缩图实现
2011-03-02 18:54 1049import java.awt.AlphaComposite; ... -
Java 实现截屏
2011-03-02 18:49 775import java.awt.Dimension; i ... -
java 缩略图
2011-03-02 18:48 0一、较清晰的方法: import java.awt.Grap ... -
PO,BO, VO, DTO, POJO, DAO的概念及区分
2011-02-24 21:36 956O/R Mapping 是 Object Relation ... -
SSH struts、spring、hibernate 面试题
2011-02-24 16:03 1182Hibernate工作原理及为什么要用? 原理: ...
相关推荐
提供的`Thumbnail_Maker.java`是一个具体的代码示例,展示了如何使用ImageJ进行缩略图的制作。通过分析和运行这个示例,开发者可以快速上手ImageJ的使用。 6. **开发应用**: 利用ImageJ,开发者不仅可以进行基本...
在这种情况下,我们可以借助外部库,如GDAL(Geospatial Data Abstraction Library),来扩展Java的能力,实现大图片的重采样和压缩,从而制作缩略图。以下是对这个主题的详细阐述: **GDAL介绍** GDAL是一个开源的...
本项目涉及的核心知识点包括图片剪切、生成缩略图、图片合成以及图片的MD5加密和校验,这些都是图像处理的重要组成部分。下面将详细讲解这些技术。 1. **图片剪切**: 图片剪切是指从原始图片中选取特定区域,将...
7. **多线程**:如果图片浏览器需要支持预览或缩略图功能,可能需要在后台线程中加载大图片,以避免阻塞用户界面。Java的Thread类或ExecutorService接口可以用来实现这一目标。 8. **异常处理**:在处理文件和图像...
生成缩略图的过程通常涉及图像处理库,如PHP中的GD库或Imagick,Python中的PIL(Python Imaging Library)或OpenCV,Java中的Java Advanced Imaging (JAI) 或 ImageIO等。这些库提供了函数来读取图像、调整尺寸并...
以下是一个具体的Java实现,用于将不同尺寸的图片居中剪裁成指定大小的缩略图。 首先,我们需要引入相关的Java库,特别是`java.awt`和`javax.imageio`包,它们包含了处理图像所需的基本类。例如,`BufferedImage`...
综上所述,制作图片浏览器不仅仅是编写代码显示图片那么简单,还需要综合运用图像处理、用户界面设计、文件系统操作、多线程编程、性能优化等多方面的知识。只有充分理解和掌握这些技术,才能构建出高效、易用且功能...
2. 服务器端处理:用户上传原始图片后,服务器端通过编程语言(如PHP、Python、Java)的图像处理库(如GD库、ImageMagick)进行缩略图生成。这种方法更稳定,不受客户端限制,但会增加服务器计算资源的消耗。 接...
"简单易懂的图片水印缩略"这个主题涉及到两个关键概念:图片水印和图片缩略。接下来,我们将深入探讨这两个概念及其相关的技术实现。 首先,我们来谈谈图片水印。水印是一种将版权信息或标识添加到图片上的技术,它...
实现这一功能需要生成每个页面的缩略图,可能需要用到 ImageIO 类进行图片读取和处理,以及 Thumbnailator 这样的第三方库来创建缩略图。缩位图数据同样需要存储和加载,以便于用户浏览。 综上所述,这个 Java 实现...
同时,通过阅读和理解"slider.java"的代码,开发者可以进一步定制功能,比如添加过渡效果、增加图片缩略图预览或者实现更复杂的交互操作。对于初学者而言,这是一个很好的学习项目,可以帮助他们提升Java编程和图形...
这个技术涵盖了多个关键知识点,包括创建缩略图、添加水印、切图以及压缩图片,这些都是数字图像处理中的基本操作。 首先,**缩略图**的生成是通过调整原图像尺寸,生成较小的版本,常用于网站预览或者节省存储空间...
4. **网络图像服务**:在网络应用中,JAI可以用于动态生成缩略图、调整图像质量等。 五、JAI与其他图像库的比较 相比于Java标准库中的`java.awt.image`包,JAI提供了更强大的功能和更好的性能。与第三方库如OpenCV...
如果是动态生成,可能涉及服务器端的图像处理库(如ImageMagick或GD库),用于缩略图的生成和尺寸调整。同时,需要考虑CDN(内容分发网络)服务,提高图片加载速度和用户体验。 5. **安全措施**:考虑到网络安全,...
6.3 实例——利用JSP制作图片缩略图 87 6.4 小结 90 第7章 JSTL——JSP标准标签库 91 7.1 JSTL基础 91 7.1.1 JSTL的核心标签库 92 7.1.2 JSTL中使用表达式语言 93 7.2 实例——利用JSTL标签生成数字序列...
3、自动建立图片缩略图功能。 4、幻灯片(Slideshow)、分页(Pagination)、统计(Statistics)、评分(Rating) 等相册基本功能一应俱全。 5、具备水印(Watermark)功能,省去一一加入的繁琐动作,在制作缩略图时同时加入...
同时,还可能对图片进行压缩、重命名或生成缩略图,以节省存储空间和提高加载速度。 其次,留言功能是此程序的核心交互部分。它需要一个数据库来存储用户的留言信息,如用户名、留言内容、图片ID等。数据库设计应...
1. **图片预览**:用户应能快速预览图片,通常通过缩略图展示,点击后可以放大查看全图。 2. **图片滑动**:支持平滑的图片切换,用户可以通过左右滑动浏览前后图片。 3. **图片旋转**:支持图片90度、180度和270度...
"thumbnailator-0.4.8"则是一个Java库,专门用于创建图像缩略图。它提供了简单易用的API,可以快速地从图像文件生成缩略图,并且支持多种调整选项,如尺寸、质量、裁剪等。这个库在处理大量图像时非常有用,特别是在...
6. **缩略图生成**:为了优化显示和节省存储空间,可能需要生成图片的缩略图。 7. **数据库交互**:将文件信息(如文件名、路径、上传时间等)存储在数据库中,方便后续访问和管理。 8. **错误处理**:提供清晰的...