1、问题产生背景描述
原项目的附件组件是采用将附件存储到应用服务器硬盘的方式来实现附件上传,由于客户部署环境中内外网隔离,内外网用户的附件需要做同步,因此需要将附件改为存储到数据库中的方式。针对附件类型是图片的,还需要生成对应的缩略图。
2、问题描述
根据需求将附件组件修改完成后,经过测试,发现缩略图的显示非常慢,一个5K左右的缩略图需要30秒左右的时间才能显示完毕,而400K大小的原图显示也只需要1-2秒。
3、问题分析
分析原图及缩略图存储、获取相关的代码,发现可能存在问题的地方有两个:
(1)缩略图的生成算法
(2)缩略图的获取及显示
为了验证是不是缩略图的生成算法有问题,上网Google了n多的缩略图生成算法,并尝试是用不同的编码器生成各种格式的缩略图(gif\png\jpeg),但除了生成速度及大小略有不同外,缩略图的显示速度还是没有明显提升。
对比原图及缩略图的获取及显示代码,发现除了其查询的SQL外,其他地方并无二异。
4、问题解决
最终解决该问题的办法是将输出缩略图时用于缓存数据的字节数组的大小改为缩略图文件的大小。
PS:
(1)虽然问题已经解决了,但是还是不太明白到底是那里的问题,因为在修改代码之前,输出原图时的缓冲区的大小与输出缩略图的缓冲区是一样大的,但原图就不存在显示缓慢的问题。因此,只是误打误撞将问题解决了,产生问题的真正原因仍然需要进一步研究。
(2)在Google缩略图生成算法时,偶然发现一开源组件,貌似功能很强大,记录于此,以备后用。
项目名称:Thumbnailator
项目主页:http://code.google.com/p/thumbnailator/
当前的最新版本为0.3.0
下载地址:http://code.google.com/p/thumbnailator/downloads/list
------------------------------------2011年2-16日补充-----------------------------------
经过进一步的代码分析,终于找到真正的问题所在
错误代码:
response.setContentLength(fileSize);
问题产生的原因是此处设置的fileSize误设为原图的文件大小,致使浏览器响应出现问题。将fileSize改为缩略图实际大小后问题解决。
分享到:
相关推荐
"java 图片生成缩略图" Java 图片生成缩略图是Java程序开发中一个常见的需求,通过将图片以缩略图形式展示,可以提高用户体验和网站性能。在本文中,我们将介绍使用Java生成缩略图的方法。 缩略图生成方法 在 ...
### Java 上传图片生成缩略图的知识点解析 在现代Web开发中,处理图像是一项常见的需求,尤其是在涉及用户上传图片的应用场景中。本篇文章将基于提供的代码片段详细讲解如何使用Java来实现上传图片并自动生成缩略图...
在Java编程环境中,获取视频缩略图是一项常见的需求,尤其在多媒体应用或者视频分享平台中。这个过程涉及到多媒体处理和图像操作的知识。本文将详细解释如何在Java中实现这一功能,以及相关的技术点。 首先,Java...
在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发等领域。这个主题涉及到如何利用Java的APIs来创建图片的缩小版本,以节省存储空间,提高页面加载速度,或者优化用户体验。...
"**TGA缩略图显示插件**"就是为了解决这个问题而设计的。这个小插件是专门为Windows系统定制的,目的是让用户在不打开文件的情况下,通过资源管理器的缩略图视图,就能快速预览TGA文件。这大大提高了工作效率,尤其...
java图片缩放 java缩略图 缩略图 java图片处理
【Java 缩略图代码详解】 在 Java 中生成图片缩略图是一项常见的需求,这通常涉及到图像处理技术。以下是一个 Java 类 `GetPicture` 的示例,它包含了获取网络图片、截取屏幕以及创建图片缩略图的功能。我们将详细...
Java 缩略图生成库,如“thumbnailator-0.4.4.jar”,是一个非常实用的工具,尤其对于那些在处理图像文件时需要快速创建预览或者缩略图的开发者而言。这个库提供了简单易用的API,可以方便地集成到Java项目中,大大...
在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页开发或移动应用中。本节将深入探讨如何使用Java实现这个功能,并基于提供的`ThumbnailUtils.java`文件来解析关键知识点。 首先,我们要了解...
java上传图片,处理图片,word转pdf图片缩略图生成,替换所有图片的ip地址工具类
4. **系统更新或软件冲突**: 最新的操作系统更新或者与其他软件的兼容性问题可能导致缩略图显示异常。 5. **临时文件或缓存问题**: 缩略图缓存可能已损坏,需要清理。 针对以上问题,我们可以尝试以下方法来修复...
本项目就是关于如何在Java环境中使用ffmpeg来获取视频的缩略图,提供了一个简单易用的解决方案。 首先,ffmpeg是一个强大的命令行工具,它支持多种视频、音频格式的处理,包括转换、合并、剪辑以及生成缩略图等。在...
在C#编程中,加载文件夹并实现缩略图显示是一项常见的需求,特别是在开发桌面应用或者图片管理软件时。这个任务通常涉及到Windows API调用、Shell32库以及图像处理技术。下面我们将深入探讨如何使用C#来实现这一功能...
3. **系统设置**:Windows系统中的一些设置可能会影响ACDSEE的缩略图显示。例如,用户可能关闭了“显示隐藏的文件和文件夹”选项,或者禁用了图片文件的预览功能。检查并调整这些设置有助于恢复缩略图显示。 4. **...
根据提供的文件信息,我们可以总结出以下关于“Java生成缩略图”的相关知识点: ### Java生成缩略图基础知识 #### 缩略图的概念 缩略图是原始图像的一个较小版本,通常用于网页展示、图片预览等场景。通过生成缩略...
java 生成缩略图类 源代码 (已经封装好)
在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发时。这个任务涉及到读取原始图像,调整其尺寸,然后保存为较小的版本,即缩略图。在这个过程中,我们可以使用Java的内置库...
ai 缩略图补丁,可在系统缩略图下显示,ai 缩略图补丁
本文将详细探讨如何在Winform的`ListView`控件中实现图片的缩略图显示。 首先,`ListView`控件有多种视图模式,其中“小图标”(SmallIcon)和“大图标”(LargeIcon)模式可以显示图像,但它们通常只能显示固定...
缩略图类(通用) 本java类能将jpg、bmp、png、gif图片文件,进行等比或非等比的大小转换。