public class CompressImage {
private static final Log log = LogFactory.getLog(CompressImage.class);
private int destWidth;// 压缩后的长
private int destHeight;// 压缩后的高
/**
* 指定压缩后的长度,按比例计算出压缩后的高度
*
* @param width
*/
public CompressImage(int width) {
this.destWidth = width;
}
/**
* 指定压缩后的长度和高度
*
* @param width
* @param height
*/
public CompressImage(int width, int height) {
this.destHeight = height;
this.destWidth = width;
}
// 根据长度计算出高度
private int getHeight(int width, int height) {
if (width > destWidth) {
float scale;// 计算原图比例
scale = (float) width / (float) destWidth;
float hh = height / scale;
return (int) hh;
} else {
this.destWidth = width;
return height;
}
}
/**
* 压缩图片分辨率
*
* @param srcPath
* @param destPath
* @throws Exception
*/
public void compress(String srcPath, String destPath) {
try {
File _file = new File(srcPath);
log.debug("SrcImagePath:" + _file.getAbsolutePath());
Image src = javax.imageio.ImageIO.read(_file);
int wideth = src.getWidth(null);// 获得图片长
int height = src.getHeight(null);// 获得图片高度
log.debug("StrImage:" + wideth + "*" + height);
int htagHeight = this.destHeight == 0 ? this.getHeight(wideth,
height) : this.destHeight;
BufferedImage tag = new BufferedImage(this.destWidth, htagHeight,
BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(src, 0, 0, this.destWidth, htagHeight, null);
// if (t != null) {// 在底部图片上写文字
// g.setColor(new Color(242, 242, 242));
// g.fillRect(this.getWideth() - 120, htagHeight - 18, 120, 18);
// g.setColor(new Color(180, 180, 180));
// g.drawRect(this.getWideth() - 120, htagHeight - 18, 119, 17);
// g.setColor(new Color(255, 102, 0));
// g.drawString(t, this.getWideth() - 100, htagHeight - 5);
// }
log.debug("DestImagePath:" + _file.getAbsolutePath());
log.debug("DestImage:" + tag.getWidth() + "*" + tag.getHeight());
FileOutputStream out = new FileOutputStream(destPath);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag);
out.close();
} catch (Exception e) {
log.error("Compress Image [" + srcPath + "] error!!\r\n" + e);
}
}
}
分享到:
相关推荐
在安卓平台上,拍照和压缩图片分辨率是一个常见的需求,特别是在存储空间有限或者网络传输速度有限的情况下。这个主题主要涉及安卓系统的相机API以及图像处理技术。在"安卓联系拍照压缩图片分辨率"这一话题中,我们...
本文将深入探讨如何使用C#语言实现图片的压缩,主要关注分辨率的调整、图片质量的改变这两个关键因素,以及如何确保在压缩后仍能保持图像的可识别性。 首先,我们要了解图片压缩的基本原理。图片压缩分为有损压缩和...
我试过好几款压缩工具,感觉这款是最方便实用的,右键一键操作,真心快捷,强烈推荐。 Picture Resizer-修改图片大小、尺寸的软件,属于右键增强类工具,操作方法非常简单:双击运行它,点击界面上的“add to ...
在实际应用中,可能需要降低图片分辨率以适应网络展示,或者压缩图片大小以节省存储空间。程序的执行流程可能包括以下步骤: 1. 图片读取:程序首先读取用户指定的图片文件,将其加载到内存中。 2. 分辨率调整:...
最好的图压缩软件,无损图片像素,最好的图压缩软件,无损图片像素,最好的图压缩软件,无损图片像素
通过java实现对图片按照尺寸、像素质量实现对图片的压缩处理,并可以对图片制定宽高或者等比压缩
如题,这个东西超牛逼,前端压缩、缩放图片,还支持在手机上运行,使用起来也很简单: lrz(filePath, { width: 285, height: 164, done: function (results) { img.src = results.base64; } }); filePath支持...
标题中的“可按百分比,按分辨率批量压缩图片袖珍工具”表明这是一款小巧而功能强大的软件,专门用于批量处理图像文件,以实现按比例或根据特定分辨率进行压缩。这样的工具在处理大量图片时非常实用,例如对于网页...
图片分辨率是指图片的像素密度,通常以宽度和高度的像素数表示,例如1920x1080。改变图片分辨率可能会影响图片的显示效果和文件大小。 要实现这个功能,我们需要用到C#中的System.Drawing命名空间,它提供了处理...
JPEG(Joint Photographic Experts Group)是一种广泛应用于数字图像和照片的有损压缩标准,它基于离散余弦变换(DCT)和量化等技术来减少文件大小,同时保持可接受的图像质量。在这个项目中,我们关注的是用C/C++...
在提供的压缩包“图片压缩缩放处理工具”中,很可能包含了这样一个批处理工具,能够帮助用户快速有效地调整图片分辨率和尺寸。使用这样的工具,用户不仅可以节省时间,还能确保处理后的图片满足特定的规格要求,从而...
图片分辨率大小修改器是一款便捷的工具,主要用于调整图像文件的分辨率和尺寸,无需繁琐的安装过程,用户可以轻松实现对图片的优化处理。在数字图像领域,分辨率是衡量图像清晰度的重要指标,它通常由像素数量来定义...
使用两中方法进行压缩,可以只改变图片大小,如,原图片100kb,压缩后变成40kb。并且不改变宽高。 一.使用ImageMagick进行压缩类-Aa.java 需要做以下配置: 1.将jmagick.dll加入jdk\bin目录中 2.将jmagick.dll加入到...
VS2015 C++ MFC 等比缩小图片分辨率大小 bool CtestCImageDlg::CreateSmallPic(CString& szOldFileName, CString& szNewFilName) { const double WIDTH = 5000; const double HEIGHT = 5000; CImage oldimg; ...
在IT行业中,图像处理是一项非常重要的技术,尤其是在移动设备和网络应用中,高效地压缩图片以减少存储空间和传输成本是必要的。本话题主要聚焦于使用Delphi编程语言进行图片(BMP和JPG格式)的压缩,目标是将图片...
Console.WriteLine($"图片分辨率:{widthInches} x {heightInches} 英寸"); ``` 这里,我们假设屏幕的DPI(每英寸点数)为96,这是一个常见的标准值。通过将图像的分辨率转换为基于96 DPI的标准,我们可以得到英寸...
这就是“批量处理修改jpg图片分辨率的工具”所解决的问题。这款工具专门用于批量调整jpg图像的分辨率,能够帮助用户高效地管理图片资源。 首先,我们要理解分辨率的概念。分辨率是衡量图片清晰度的一个关键指标,...
为了实现按比例压缩图片的同时保持清晰度,我们需要采用一些特殊的技术和策略。以下将详细介绍如何在PHP中实现这一目标。 1. 图片压缩原理: 图片压缩主要分为有损压缩和无损压缩两种。有损压缩(如JPEG)会丢失...
3. 压缩图片比率:涉及图片按需压缩,即根据客户端请求的特定尺寸比例返回压缩后的图片。 接下来,我们可以展开知识点: ### FastDFS知识点: - **分布式文件系统:**FastDFS专门针对大容量存储和高并发访问设计...