图片不失真的等比例压缩算法:
算法思想:根据压缩基数和压缩比来压缩原图,生产一张图片效果最接近原图的缩略图。
算法讲解:
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();
}
分享到:
相关推荐
《Luban微信朋友圈的图片压缩算法深度解析》 在当今的移动互联网时代,图片分享已经成为社交媒体中的重要一环,特别是在微信朋友圈这样的社交平台上。Luban,这个名字来源于中国古代建筑工匠之神,寓意精雕细琢,...
《基于Luban图片压缩算法在即时聊天APP中的应用》 在移动互联网时代,即时通信应用已经成为人们日常生活和工作中不可或缺的一部分。据统计,即时通信类应用的用户占据总体网民的92.1%,显示出其广泛的需求和影响力...
总的来说,"易语言图片压缩到最小"这个话题涵盖了易语言编程、图像处理、文件操作以及压缩算法等多个IT领域的知识点。通过学习和实践,开发者不仅可以掌握易语言的编程技巧,还能深入理解图像压缩的技术细节,这对于...
在IT行业中,图片压缩和等比例放缩是图像处理领域中的常见操作,广泛应用于网站优化、存储管理和多媒体设计。下面将详细阐述这两个知识点。 一、图片压缩 图片压缩是为了减小图片文件的大小,以便更有效地存储和...
本文将深入探讨一款“非常好用的图片压缩工具”,它具备按各种比例高效压缩各种格式图片的能力。 首先,我们要理解图片压缩的基本原理。图片压缩主要有两种类型:有损压缩和无损压缩。有损压缩如JPEG,会在压缩过程...
【图片压缩算法】 图片压缩是数字图像处理领域中的一个重要概念,它主要涉及到如何减少图像数据量,以便于存储、传输和快速访问。在Android平台上,由于设备资源有限,高效的图片压缩算法显得尤为重要。本篇文章将...
在给定的例子中,将14MB的图片压缩到80%,结果得到约100KB的文件,这通常意味着使用了一种无损压缩算法,有效地减小了文件大小,同时保持了原始图像的细节和清晰度。 **无损等比例缩放**: 等比例缩放是指按照一定...
Java压缩图片util,可等比例宽高不失真压缩,也可直接指定压缩后的宽高,只能用炫酷来形容,感兴趣就下载看看吧
对于更高级的功能,如自定义压缩算法或特殊效果,可以利用第三方库如ImageSharp,它提供了丰富的API用于图像处理,包括无损压缩和剪切。 综上所述,C# Core提供了多种方式来实现图片的无损压缩和剪切,无论是使用...
图片压缩算法是实现这一目标的关键。例如,JPEG使用离散余弦变换(DCT)和量化技术,通过对颜色信息进行分块处理,保留人眼敏感的部分,舍弃不敏感的部分。而PNG则采用了预测编码和霍夫曼编码,适合于线条清晰、颜色...
它采用了智能的压缩算法,能够在压缩过程中尽可能地保留原始图像的细节和色彩,使得压缩后的图片在视觉上与原图无太大差异。这对于需要大批量处理图片的用户来说,无疑大大提高了工作效率。 在使用ImageResizer.exe...
综上所述,这个“图片压缩”项目涵盖了图片压缩算法、图片尺寸调整、用户指定参数处理、测试策略等多个IT领域的知识点。在实际开发过程中,还需要关注用户体验、性能优化以及安全性等方面,以提供稳定、高效且用户...
4. 压缩处理:执行压缩算法,如JPEG的DCT(离散余弦变换)、PNG的预测编码和霍夫曼编码等,以减少数据量。 5. 图像优化:在保持视觉质量尽可能不变的情况下,进一步优化编码过程,例如去除冗余数据、调整颜色表等。...
- `compress.js`:这是一个轻量级的库,主要用于前端图片压缩,支持多种图片格式,并提供API来调整压缩比例。 - `img-compress`:这个库提供了简单的API,可以设置最大宽度、高度和质量参数,适合快速实现图片压缩...
总的来说,"上传图片时按比例压缩"涉及到图片处理的基本原理和技术,包括尺寸调整、颜色管理、压缩算法选择以及服务器端的处理流程。使用像ImageMagick这样的专业工具,可以高效且灵活地实现这一功能,为网站或应用...
【瑞影无损图片压缩大师】通过精确的算法控制,确保压缩前后图片的色彩还原度、清晰度和锐利度等关键指标几乎一致,肉眼难以察觉差异。无论是用于印刷、设计,还是社交媒体分享,用户都可以放心地使用压缩后的图片。...
除了Java 2D API,还有一些第三方库,如Apache Commons Imaging(以前的Sanselan)和ImageMagick,它们提供了更丰富的图片处理功能,包括高级压缩算法和更多格式支持。 总结来说,Java中的图片压缩涉及到读取图片、...
这一特性得益于软件内置的高效压缩算法,它可能结合了上述的几种无损压缩方法,通过优化编码过程,达到在不损失图像细节的前提下最大限度地减小文件大小。 该软件的使用非常简便,用户只需选择待压缩的图片文件,...
总的来说,Caesium的图片压缩技术结合了多种图像处理理论与实际应用,不仅优化了压缩算法,还利用了强大的Qt框架和C++库,为用户提供了一流的图片压缩体验。了解这些技术细节,有助于我们更好地理解和利用Caesium,...
【图片压缩.net版】是一个基于.NET框架开发的图像处理程序,其主要功能是将图片按照预设的比例进行压缩,同时确保在压缩过程中不发生图像变形和质量失真。这一技术在许多领域都有广泛应用,比如网站优化、社交媒体...