- 浏览: 670521 次
- 性别:
- 来自: 石家庄
文章分类
最新评论
-
abao1:
老贾 在安装IDEA的过程中,在激活步骤时,按如下操作即可: ...
IntelliJ IDEA 2016注册方法和注册码 -
bo_hai:
./usr/bin/java: symbol lookup ...
jmagick安装步骤 -
wxcking:
不错的, 收藏一下
JAVA使用POI生成Excel文件 -
zgyfh:
大哥,密码是多少啊?zgyfh@tom.com谢谢了!新手学习 ...
WPF做的必备示例 -
记忆无泪:
jiasongmao 写道你的邮箱是多少,我可以发源代码到邮箱 ...
WPF做的必备示例
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; } }
发表评论
-
强引用、软引用、弱引用和虚引用
2018-06-06 16:37 419Java 如何有效地避免OOM:善于利用软引用和弱引用 ... -
使用Spring实现读写分离( MySQL实现主从复制)
2018-05-17 11:46 551使用Spring实现读写分离( MySQL实现主从复制) ... -
工作流activiti
2018-04-18 15:52 437Activiti工作流教程 https://blog.cs ... -
java的动态代理机制详解
2017-12-22 15:54 418https://www.cnblogs.c ... -
OCR框架整理
2017-08-16 09:29 581泰比ABBYY OCR SDK开发包 Asp ... -
eclipse启动tomcat出现内存溢出错误 java.lang.OutOfMemoryError: PermGen space
2017-04-06 16:54 627发布工程后,启动tomcat出现如下内存溢出错误: java ... -
springMVC上传文件大小限制以及超过限制后的自定义处理
2017-04-01 08:12 1255http://blog.csdn.net/baidu_186 ... -
IntelliJ IDEA 2016注册方法和注册码
2017-03-30 13:52 2527IntelliJ IDEA号称当前Java开发效率最高的ID ... -
java使用wsimport生成服务代码时报错的解决办法
2017-01-18 11:27 1702今天遇到了WebService的问题:在使用jdk命令wsi ... -
OCR文字识别系统
2016-12-21 22:14 454慧视OCR文字识别系统 增值税专用发票扫描识别系统 ... -
Maven中央仓库无法更新jar包的解决办法
2016-12-09 00:44 1068删掉了*lastUpdated文件 然后到setti ... -
spring jar包下载地址
2015-09-23 17:31 631spring jar包下载地址:http://maven.sp ... -
JRex java webbrowser 爬虫ajax网页 源码
2015-01-08 16:37 969一般在浏览器中查看页面代码 是浏览器直接下载到的页面代码 在 ... -
程序员福利各大平台免费接口,非常适用
2014-12-03 10:03 913电商接口 京东获取单个商品价格接口: http: ... -
数据库建模工具:PowerDesigner与Rose详解教程
2009-12-08 12:38 1896一、 二者的出身 作为世界最著名的两大CASE工具, ... -
MD5、SHA加密实体类
2009-08-02 17:37 1206public class MD5Utility { ... -
des加密解密实体类
2009-08-02 17:21 1397/** * DES加密解密类. ... -
Windows客户端的JProfiler远程监控Linux上的Tomcat
2009-07-20 12:23 27771.测试环境 服务器:ubuntu8.04(内核版本 2.6. ... -
Jalopy在Eclipse下的使用
2009-07-13 17:47 1612Jalopy是一款代码美化工 ... -
使用Jconsole监视tomcat
2009-07-08 11:50 1638可以分一下几个步骤进行: 第一步: 修改tomcat的ca ...
相关推荐
提供的`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)进行缩略图生成。这种方法更稳定,不受客户端限制,但会增加服务器计算资源的消耗。 接...
"简单易懂的图片水印缩略"这个主题涉及到两个关键概念:图片水印和图片缩略。接下来,我们将深入探讨这两个概念及其相关的技术实现。 首先,我们来谈谈图片水印。水印是一种将版权信息或标识添加到图片上的技术,它...
同时,通过阅读和理解"slider.java"的代码,开发者可以进一步定制功能,比如添加过渡效果、增加图片缩略图预览或者实现更复杂的交互操作。对于初学者而言,这是一个很好的学习项目,可以帮助他们提升Java编程和图形...
实现这一功能需要生成每个页面的缩略图,可能需要用到 ImageIO 类进行图片读取和处理,以及 Thumbnailator 这样的第三方库来创建缩略图。缩位图数据同样需要存储和加载,以便于用户浏览。 综上所述,这个 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. **错误处理**:提供清晰的...