- 浏览: 108707 次
- 性别:
- 来自: 北京
文章分类
最新评论
public static void toJPG(String source, String dest, int quality) throws JimiException {
if (dest == null || dest.trim().equals(""))
dest = source;
if (!dest.toLowerCase().trim().endsWith("jpg")) {
dest += ".jpg";
System.out.println("Overriding to JPG, output file: " + dest);
}
if (quality < 0 || quality > 100 || (quality + "") == null
|| (quality + "").equals("")) {
System.out.println("quality must between ’0’ and ’100’");
System.out.println("set to DEFAULT value:’75’");
quality = 100;
}
try {
JPGOptions options = new JPGOptions();
options.setQuality(quality);
ImageProducer image = Jimi.getImageProducer(source);
JimiWriter writer = Jimi.createJimiWriter(dest);
writer.setSource(image);
// 加入属性设置,非必要
// /*
writer.setOptions(options);
// */
writer.putImage(dest);
OutputStream os = new ByteArrayOutputStream();
writer.putImage(os);
} catch (JimiException je) {
throw je;
}
}
public static void toJPG(InputStream input, String dest, int quality) throws JimiException {
/*if (dest == null || dest.trim().equals(""))
dest = source;*/
if (!dest.toLowerCase().trim().endsWith("jpg")) {
dest += ".jpg";
System.out.println("Overriding to JPG, output file: " + dest);
}
if (quality < 0 || quality > 100 || (quality + "") == null
|| (quality + "").equals("")) {
System.out.println("quality must between ’0’ and ’100’");
System.out.println("set to DEFAULT value:’75’");
quality = 100;
}
try {
JPGOptions options = new JPGOptions();
options.setQuality(quality);
//ImageProducer image = Jimi.getImageProducer(source);
ImageProducer image = Jimi.getImageProducer(input);
JimiWriter writer = Jimi.createJimiWriter(dest);
writer.setSource(image);
// 加入属性设置,非必要
// /*
writer.setOptions(options);
// */
writer.putImage(dest);
} catch (JimiException je) {
throw je;
}
}
/**
*
* 线性改变图片尺寸
*
* @param source
*
* 源文件完整路径
*
* @param desc
*
* 目标文件完整路径
*
* @param descWidth
*
* 图片期望宽度
*
* @param descHeight
*
* 图片期望高度
* @throws Exception
*
*/
public void changeDimension(String source, String desc, int descWidth,
int descHeight)
throws Exception {
String temp = desc;
File _file = null;
if (desc == null || desc.trim().equals(""))
desc = source;
if (!desc.toLowerCase().trim().endsWith("jpg")) {
temp = desc.trim() + ".jpg";
}
this.toJPG(source, temp, 100);
_file = new File(temp); // 读入文件
Image src = javax.imageio.ImageIO.read(_file); // 构造Image对象
double wideth = (double) src.getWidth(null); // 得到源图宽
double height = (double) src.getHeight(null); // 得到源图长
int iWideth = descWidth;
int iHeight = descHeight;
BufferedImage tag = new BufferedImage(iWideth, iHeight,
BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src, 0, 0, iWideth, iHeight, null); // 绘制缩小后的图
if (!temp.trim().equals(desc))
_file.deleteOnExit();
if (desc.toLowerCase().trim().endsWith("jpg")) {
JimiWriter writer = Jimi.createJimiWriter(desc);
writer.setSource(tag);
writer.putImage(desc);
} else {
throw new Exception("不支持此格式的图片尺寸的转换");
}
}
/**
*
* 线性改变图片尺寸(可同时改变图片格式)
*
*
*
* @param source
*
* 源文件完整路径
*
* @param desc
*
* 目标文件完整路径
*
* @param ins
*
* 放大/缩小比率
* @throws Exception
*
*/
public void changeDimension(String source, String desc, double percent)
throws Exception {
String temp = desc;
File _file = null;
if (desc == null || desc.trim().equals(""))
desc = source;
if (!desc.toLowerCase().trim().endsWith("jpg")) {
temp = desc.trim() + ".jpg";
}
this.toJPG(source, temp, 100);
_file = new File(temp); // 读入文件
Image src = javax.imageio.ImageIO.read(_file); // 构造Image对象
double wideth = (double) src.getWidth(null); // 得到源图宽
double height = (double) src.getHeight(null); // 得到源图长
int iWideth = (int) (wideth * percent);
int iHeight = (int) (height * percent);
BufferedImage tag = new BufferedImage(iWideth, iHeight,
BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src, 0, 0, iWideth, iHeight, null); // 绘制缩小后的图
if (!temp.trim().equals(desc))
_file.deleteOnExit();
if (desc.toLowerCase().trim().endsWith("jpg")) {
JimiWriter writer = Jimi.createJimiWriter(desc);
writer.setSource(tag);
writer.putImage(desc);
} else {
throw new Exception("不支持此格式的图片尺寸的转换");
}
}
public byte [] toJPG(String source) throws IOException {
ByteArrayOutputStream os = new ByteArrayOutputStream();
File fin = new File(source);
BufferedImage input = ImageIO.read(fin);
ImageIO.write(input, "jpg", os);
byte [] bytes = os.toByteArray();
return bytes;
}
public byte[] toJPG(byte[] tempbytes) throws IOException {
ByteArrayOutputStream os = new ByteArrayOutputStream();
InputStream in = new ByteArrayInputStream(tempbytes);
BufferedImage input = ImageIO.read(in);
ImageIO.write(input, "jpg", os);
byte [] bytes = os.toByteArray();
return bytes;
}
public byte [] changeDimension(InputStream is,int expectWidth,int expectHeight) throws IOException {
ByteArrayOutputStream os = new ByteArrayOutputStream();
BufferedImage input = ImageIO.read(is);
BufferedImage scaledBI = new BufferedImage(expectWidth, expectHeight,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = scaledBI.createGraphics();
g.setComposite(AlphaComposite.Src);
g.drawImage(input, 0, 0, expectWidth, expectHeight, null);
g.dispose();
ImageIO.write(scaledBI, "jpg", os);
byte [] descBytes = os.toByteArray();
return descBytes;
}
public static boolean isJPG(byte[] bytes) {
if (String.valueOf(bytes[0]).equals("-1") && String.valueOf(bytes[1]).equals("-40") && String.valueOf(bytes[2]).equals("-1") /*&& String.valueOf(bytes[3]).equals("-32")*/)
return true;
else
return false;
}
public static boolean isPNG(byte[] bytes) {
if(String.valueOf(bytes[0]).equals("-119") && String.valueOf(bytes[1]).equals("80") && String.valueOf(bytes[2]).equals("78") && String.valueOf(bytes[3]).equals("71"))
return true;
else
return false;
}
public static boolean isGIF(byte[] bytes) {
if (String.valueOf(bytes[0]).equals("71") && String.valueOf(bytes[1]).equals("73") && String.valueOf(bytes[2]).equals("70"))
return true;
else
return false;
}
public static boolean isBMP(byte[] bytes) {
if (String.valueOf(bytes[0]).equals("66") && String.valueOf(bytes[1]).equals("77"))
return true;
else
return false;
}
public static byte[] getBytes(String filePath) throws Exception {
File file = new File(filePath);
InputStream input = new FileInputStream(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte [] bytes = new byte [4096];
int length = input.read(bytes);
while(length != -1) {
baos.write(bytes,0,length);
length = input.read(bytes);
}
byte [] tempByte = baos.toByteArray();
baos.close();
input.close();
return tempByte;
}
public double getPicLength(InputStream input) throws IOException {
long lBytes = input.available();
return ((double)lBytes/1024)/1024;
}
发表评论
-
解决excel文字读取错误 可能某些数字格式已丢失
2018-12-29 09:11 612ServletOutputStream ... -
struts上传下载多个文件
2015-04-30 11:24 499实例: 第一步导入包: commons-fileupload- ... -
jdcob--Could not initialize class com.jacob.com.ComThread
2015-02-27 09:00 19001--dll 文件 放在tomcat/bin 下面 ... -
ntko打印公章
2014-12-02 09:04 559//TANGER_OCX_OBJ.ActiveDocument ... -
hibernate 映射文件生成数据库表脚本
2011-03-28 16:20 859import org.hibernate.cfg.Config ... -
java换肤改变页面肤色
2011-03-02 14:05 990import java.io.IOException;impo ... -
java 过滤未登录的用户
2011-03-02 14:03 1097<filter> <filte ... -
java 在线用户统计
2011-03-02 13:47 1624web.xml <listener> ... -
java 过滤乱码
2011-03-02 13:44 940web.xml <filter> <f ... -
jacob资料
2011-02-13 23:48 1861JACOB是一个JAVA到微软的COM接口的桥梁。使用JACO ... -
hibernate 查询乱码
2010-10-06 15:12 743在使用HQL进行查询时,如果查询语句中存在中文字符,则会有乱码 ... -
java 多线程代码
2010-09-30 12:44 1485package com.jacob.activeX; imp ... -
过滤未登录的用户
2010-09-15 10:59 876package com.filter; import jav ... -
jacob操作word 解决换页问题
2010-09-13 08:17 3755package audit.pub.word; imp ... -
jacob操作word增加表格 行列
2010-08-10 09:52 2935import com.jacob.activeX.Activ ... -
jsp导出word 带图片
2010-04-12 17:28 33771.将word另存为html格式,然后将html格式的文件另存 ... -
读取blob格式图片上传到服务器目录
2010-04-12 17:21 1980//得到blob格式图片 String fileUrl = ... -
批量导入图片保存成blob格式
2010-03-31 15:15 1682/** * 创建目录 * @param director ... -
org.apache.tools包 解压缩zip 解决中文乱码 ant 版本冲突
2010-03-30 12:50 3031private void createDirectory(St ... -
java 获取文件大小
2010-03-29 14:32 15804import java.io.*; public class ...
相关推荐
图片压缩的核心在于将图片绘制到Canvas上时,可以指定绘制的宽度和高度,这实际上就是一种简单的缩放过程。然后我们可以使用`toDataURL()`方法将Canvas内容转换为Base64编码的data URL,这个URL可以代表一个压缩后的...
你可以设置压缩选项,包括压缩的品质及输出格式,可以调整图片大小绝对值及百分比,经小编实测,大小为243.64kb的图片,品质选择50%压缩后为130.93kb,图片大小减小了一倍,如果品质设置再低些,则图片体积会变得更小...
软件介绍: 一款很好用的图片压缩工具Caesium,压缩JPG格式图片效果更佳,简单试了一下,能够将400KB大小的图片压缩到100KB,...压缩后的图片品质不会有明显的损失,但文件的体积却能大幅减小,从而节省磁盘空间。
c# 中旋转图片,保存后会发现图片文件缩小或增加很多,此方法可以保证原来图片的品质,基本和原图大小一样。 程序里使用了Bitmap的默认品质来保存图片,默认品质是75(试着改变这个数,100%时最好),压缩率大概为21...
5. **调整图片品质**: - 当保存JPEG文件时,降低【JPEG选项】中的品质设置,可以在保持视觉效果的前提下减少文件大小。 6. **转换色彩空间**: - 如果原始图片是CMYK色彩模式,转换为RGB模式可以减小文件大小,...
软件说明: 图片批量缩放软件是一款根据用户设置格式和大小自动操作的工具,操作方便,只需要要三步: 1. 选择图片导出的目录 2. 图片输出格式设置 ...3. 支持图像格式的自动转换, 可设置输出图像大小和图像品质.
4. **质量设置**:图像压缩时的品质设置,更高的品质意味着更大的文件大小,而较低的品质则可以显著减小文件大小。 5. **批量处理**:是否支持一次处理多个图片,这对于处理大量图片非常有用。 6. **安全提示**:...
质量参数决定了生成图片的品质,一般范围从0到100。 6. 水印的定位和样式设置: 水印可以定位在图片的任意位置,并且支持横向和纵向的偏移设置。用户还可以设置水印的文字、字体大小、颜色等属性,以达到理想的...
Caesium(图片批量无损压缩工具)是一...它可以在保证图片原有品质的同时,将图片大小减少90%,就是如此神奇!而且Caesium操作简单,可以同时压缩数张图片,可自定义图片质量,在操作的同时还可以即时预览压缩前后的图片.
* 直接另存图片,菜单——文件——存储为,弹出"JPEG 选项"窗口中,品质选择8~10。 * 转换图片色彩空间,若图片的原始色彩空间是 CMYK,则可在转换成 RGB 后存储可降少图片大小。 * 调整分辨率,将分辨率设成 72 ...
例如,通过设置窗体的透明度属性实现半透明效果,通过捕获鼠标滚轮事件并调整图片的缩放比例,以及通过监听鼠标移动事件和图片坐标计算来实现拖动查看。这样的编程技巧需要对图形用户界面(GUI)编程有深入的理解,...
软件介绍: 现在数码相机的普及,让我们的电脑硬盘越来越小了,由于当前数码相机拍摄的图片体积都...还可以调整图片大小,支持按比例调整大小,当设置完成后点击“压缩”,程序会自动进行图片压缩,而无需手动操作。
数码照片文件大小和拍摄时设置的分辨率和品质有关,還和被拍摄景物的色彩、纹理复杂程度有关,同样的相机设置拍白墙和风景文件大小是不一样的。 计算机文件大小的基本单位是字节(byte),每个字节是由 8 个比特...
- 如果是在Tomcat服务器下运行的应用,则需要修改`catalina.bat`文件中的内存设置,增加堆内存大小和永久代大小,例如设置`-Xms256M-Xmx768M-XX:MaxPermSize=128M`,这有助于避免因内存不足导致的程序崩溃。...
还可以通过压缩图片、调整分辨率、使用WebP等高效图片格式来减小图片大小,进一步提升页面加载速度。 在实际应用中,设计师还需要考虑图片的尺寸适应性,确保在不同设备和屏幕尺寸下都能正常显示。响应式设计原则...
这可能涉及到对图片进行分类,如角色、环境、UI等,然后进行必要的编辑和优化,如调整大小、格式转换、透明度设置等,以确保素材能无缝融入到游戏中。 此外,考虑到安卓平台的多样性,开发者还需要关注图片的分辨率...
描述中提到“无损”压缩,意味着该工具在压缩图片时不会降低原始图像的品质,同时可以调整压缩后的清晰度,以适应不同的需求。此外,标签中的“可限制大小”和“可限制像素”进一步表明该工具具有灵活的设置选项,...
同时,还可以提供一个还原功能,将图片恢复到原始大小。 6. **事件处理**:QT的信号和槽机制是事件驱动编程的核心,我们将为各个按钮和功能添加相应的信号和槽函数,以响应用户的交互操作。 在实际开发过程中,...
2. **创建透明背景**:创建一个新的Bitmap对象,设置其大小与原图相同,并指定背景为透明: ```csharp Bitmap transparentImage = new Bitmap(originalImage.Width, originalImage.Height, PixelFormat.Format32...