`
colorfish
  • 浏览: 26824 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

等比例图片压缩算法

阅读更多

图片不失真的等比例压缩算法:
算法思想:根据压缩基数和压缩比来压缩原图,生产一张图片效果最接近原图的缩略图。
算法讲解:
public  void  saveMinPhoto(String srcURL,String deskURL,double comBase,double scale){
/*srcURl 原图地址;deskURL 缩略图地址;comBase 压缩基数;scale 压缩限制(宽/高)比例*/
java.io.File srcFile = new java.io.File(srcURL);
Image src = new javax.imageio.ImageIO.read(srcFile);
int srcHeight = src.getHeight(null);
int srcWidth = src.getWidth(null);
int deskHeight = 0;//缩略图高
int deskWidth  = 0;//缩略图宽
double srcScale = (double)srcHeight/srcWidth;
if((double)srcHeight>comBase || (double)srcWidth>comBase){
     if(srcScale>=scale || 1/srcScale>scale){
            if(srcScale>=scale){
                  deskHeight = (int)comBase;
                  deskWidth  = srcWidth*deskHeight/srcHeight;
              }else{
                 deskWidth = (int)comBase ;
                 deskHeight  = srcHeight*deskWidth/srcWidth;
               }

       } else {
         if((double)srcHeight>comBase){
            deskHeight = (int)comBase;
            deskWidth  = srcWidth*deskHeight/srcHeight;
             } else{
                 deskWidth = (int)comBase ;
                 deskHeight  = srcHeight*deskWidth/srcWidth;
              }

          }
      }else {
          deskHeight = srcHeight;
          deskWidth  = srcWidth;

  }
BufferedImage tag = new BufferedImage(deskWidth, deskHeight,
    BufferedImage.TYPE_3BYTE_BGR);
  tag.getGraphics().drawImage(src, 0, 0, deskWidth, deskHeighth, null); //绘制缩小后的图
  FileOutputStream deskImage = new FileOutputStream(deskURL); //输出到文件流
  JPEGImageEncoder encoder = JPEGCodec
    .createJPEGEncoder(deskImage);
  encoder.encode(tag); //近JPEG编码
  deskImage.close();

}

分享到:
评论
7 楼 colorfish 2009-08-13  
jiudian30 写道
lz的算法看起来很朴素。

建议lz有空研究一下这3个算法:1、nearest,2、bilinear,3、bicubic。

谢谢赐教,呵呵。
6 楼 colorfish 2009-08-13  
cn-done 写道
楼主  貌似以前XYTX里面用到了这个吧
PS:一不小心,发了个水贴,被扣了30分,有点无语,多了点吧!

坚强水贴,呵呵
5 楼 jiudian30 2009-08-02  
lz的算法看起来很朴素。

建议lz有空研究一下这3个算法:1、nearest,2、bilinear,3、bicubic。
4 楼 cn-done 2009-07-30  
楼主  貌似以前XYTX里面用到了这个吧
PS:一不小心,发了个水贴,被扣了30分,有点无语,多了点吧!
3 楼 cn-done 2009-07-30  
收藏,学习下!
2 楼 xuyao 2009-01-05  
http://www.iteye.com/topic/309509这个不是算法吧,只是根据一个系数把图的长宽变了一下
1 楼 lc7cl 2009-01-05  
啥算法???

相关推荐

    Luban微信朋友圈的图片压缩算法

    《Luban微信朋友圈的图片压缩算法深度解析》 在当今的移动互联网时代,图片分享已经成为社交媒体中的重要一环,特别是在微信朋友圈这样的社交平台上。Luban,这个名字来源于中国古代建筑工匠之神,寓意精雕细琢,...

    基于Luban图片压缩算法在即时聊天APP中的应用.pdf

    《基于Luban图片压缩算法在即时聊天APP中的应用》 在移动互联网时代,即时通信应用已经成为人们日常生活和工作中不可或缺的一部分。据统计,即时通信类应用的用户占据总体网民的92.1%,显示出其广泛的需求和影响力...

    易语言图片压缩到最小

    总的来说,"易语言图片压缩到最小"这个话题涵盖了易语言编程、图像处理、文件操作以及压缩算法等多个IT领域的知识点。通过学习和实践,开发者不仅可以掌握易语言的编程技巧,还能深入理解图像压缩的技术细节,这对于...

    图片压缩,等比例放缩图片

    在IT行业中,图片压缩和等比例放缩是图像处理领域中的常见操作,广泛应用于网站优化、存储管理和多媒体设计。下面将详细阐述这两个知识点。 一、图片压缩 图片压缩是为了减小图片文件的大小,以便更有效地存储和...

    非常好用的图片压缩工具,能够按各种比例高效压缩各种格式图片。

    本文将深入探讨一款“非常好用的图片压缩工具”,它具备按各种比例高效压缩各种格式图片的能力。 首先,我们要理解图片压缩的基本原理。图片压缩主要有两种类型:有损压缩和无损压缩。有损压缩如JPEG,会在压缩过程...

    图片压缩算法

    【图片压缩算法】 图片压缩是数字图像处理领域中的一个重要概念,它主要涉及到如何减少图像数据量,以便于存储、传输和快速访问。在Android平台上,由于设备资源有限,高效的图片压缩算法显得尤为重要。本篇文章将...

    图片 无损压缩 无损等比例缩放

    在给定的例子中,将14MB的图片压缩到80%,结果得到约100KB的文件,这通常意味着使用了一种无损压缩算法,有效地减小了文件大小,同时保持了原始图像的细节和清晰度。 **无损等比例缩放**: 等比例缩放是指按照一定...

    Java压缩图片util,可等比例宽高不失真压缩,也可直接指定压缩后的宽高

    Java压缩图片util,可等比例宽高不失真压缩,也可直接指定压缩后的宽高,只能用炫酷来形容,感兴趣就下载看看吧

    C# core 图片压缩 图片无损压缩 图片无损剪切 无损图片压缩 无损图片剪切

    对于更高级的功能,如自定义压缩算法或特殊效果,可以利用第三方库如ImageSharp,它提供了丰富的API用于图像处理,包括无损压缩和剪切。 综上所述,C# Core提供了多种方式来实现图片的无损压缩和剪切,无论是使用...

    图片压缩缩放处理工具

    图片压缩算法是实现这一目标的关键。例如,JPEG使用离散余弦变换(DCT)和量化技术,通过对颜色信息进行分块处理,保留人眼敏感的部分,舍弃不敏感的部分。而PNG则采用了预测编码和霍夫曼编码,适合于线条清晰、颜色...

    图片压缩小工具

    它采用了智能的压缩算法,能够在压缩过程中尽可能地保留原始图像的细节和色彩,使得压缩后的图片在视觉上与原图无太大差异。这对于需要大批量处理图片的用户来说,无疑大大提高了工作效率。 在使用ImageResizer.exe...

    图片压缩,上传后自动生成新的压缩图,可指定图片大小

    综上所述,这个“图片压缩”项目涵盖了图片压缩算法、图片尺寸调整、用户指定参数处理、测试策略等多个IT领域的知识点。在实际开发过程中,还需要关注用户体验、性能优化以及安全性等方面,以提供稳定、高效且用户...

    图片压缩工具,简单好用,可压缩至300K以内

    4. 压缩处理:执行压缩算法,如JPEG的DCT(离散余弦变换)、PNG的预测编码和霍夫曼编码等,以减少数据量。 5. 图像优化:在保持视觉质量尽可能不变的情况下,进一步优化编码过程,例如去除冗余数据、调整颜色表等。...

    js图片压缩

    - `compress.js`:这是一个轻量级的库,主要用于前端图片压缩,支持多种图片格式,并提供API来调整压缩比例。 - `img-compress`:这个库提供了简单的API,可以设置最大宽度、高度和质量参数,适合快速实现图片压缩...

    上传图片时按比例压缩

    总的来说,"上传图片时按比例压缩"涉及到图片处理的基本原理和技术,包括尺寸调整、颜色管理、压缩算法选择以及服务器端的处理流程。使用像ImageMagick这样的专业工具,可以高效且灵活地实现这一功能,为网站或应用...

    瑞影无损图片压缩大师

    【瑞影无损图片压缩大师】通过精确的算法控制,确保压缩前后图片的色彩还原度、清晰度和锐利度等关键指标几乎一致,肉眼难以察觉差异。无论是用于印刷、设计,还是社交媒体分享,用户都可以放心地使用压缩后的图片。...

    java图片压缩处理(可以压缩为任意大小

    除了Java 2D API,还有一些第三方库,如Apache Commons Imaging(以前的Sanselan)和ImageMagick,它们提供了更丰富的图片处理功能,包括高级压缩算法和更多格式支持。 总结来说,Java中的图片压缩涉及到读取图片、...

    无损图片压缩大师_V1.1

    这一特性得益于软件内置的高效压缩算法,它可能结合了上述的几种无损压缩方法,通过优化编码过程,达到在不损失图像细节的前提下最大限度地减小文件大小。 该软件的使用非常简便,用户只需选择待压缩的图片文件,...

    图片压缩Caesium.zip

    总的来说,Caesium的图片压缩技术结合了多种图像处理理论与实际应用,不仅优化了压缩算法,还利用了强大的Qt框架和C++库,为用户提供了一流的图片压缩体验。了解这些技术细节,有助于我们更好地理解和利用Caesium,...

    图片压缩.net版

    【图片压缩.net版】是一个基于.NET框架开发的图像处理程序,其主要功能是将图片按照预设的比例进行压缩,同时确保在压缩过程中不发生图像变形和质量失真。这一技术在许多领域都有广泛应用,比如网站优化、社交媒体...

Global site tag (gtag.js) - Google Analytics