解决java压缩图片透明背景变黑色的问题
JAVA 问题 解决 图片 压缩 背景 透明 黑色
2023-06-13 09:15:24 时间
publicclassPicture{
//TODOAuto-generatedconstructorstub
publicstaticvoidresizePNG(StringfromFile,StringtoFile,intoutputWidth,intoutputHeight,booleanproportion){
try{
Filef2=newFile(fromFile);
BufferedImagebi2=ImageIO.read(f2);
intnewWidth;
intnewHeight;
//判断是否是等比缩放
if(proportion==true){
//为等比缩放计算输出的图片宽度及高度
doublerate1=((double)bi2.getWidth(null))/(double)outputWidth+0.1;
doublerate2=((double)bi2.getHeight(null))/(double)outputHeight+0.1;
//根据缩放比率大的进行缩放控制
doublerate=rate1<rate2?rate1:rate2;
newWidth=(int)(((double)bi2.getWidth(null))/rate);
newHeight=(int)(((double)bi2.getHeight(null))/rate);
}else{
newWidth=outputWidth;//输出的图片宽度
newHeight=outputHeight;//输出的图片高度
}
BufferedImageto=newBufferedImage(newWidth,newHeight,
BufferedImage.TYPE_INT_RGB);
Graphics2Dg2d=to.createGraphics();
to=g2d.getDeviceConfiguration().createCompatibleImage(newWidth,newHeight,
Transparency.TRANSLUCENT);
g2d.dispose();
g2d=to.createGraphics();
Imagefrom=bi2.getScaledInstance(newWidth,newHeight,bi2.SCALE_AREA_AVERAGING);
g2d.drawImage(from,0,0,null);
g2d.dispose();
ImageIO.write(to,"png",newFile(toFile));
}catch(IOExceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args)throwsIOException{
System.out.println("Start");
resizePNG("C:\\DocumentsandSettings\\Administrator\\桌面\\8d9e9c82d158ccbf8b31059319d8bc3eb035414e.jpg","C:\\DocumentsandSettings\\Administrator\\桌面\\ell.png",200,100,true);
System.out.println("OK");
}
}
相关文章
- 解决Serialized class ** must implement java.io.Serializable问题「建议收藏」
- java判断一个对象是否为空_Java中判断对象是否为空的方法的详解
- java %08d_总结Java中String.format()的使用[通俗易懂]
- java出现中文乱码_JAVA中文显示乱码问题「建议收藏」
- Java基础知识总结(超详细整理),java从入门到精通pdf「建议收藏」
- 【JAVA面试必会】JMM高并发详解(java内存模型、JMM三大特征、volatile关键字 )「建议收藏」
- 动态规划算法java代码_动态规划算法解决背包问题
- php代码混淆加密算法_java代码混淆加密
- 【Java 并发编程】线程操作原子性问题 ( 问题业务场景分析 | 使用 synchronized 解决线程原子性问题 )
- Stackoverflow上人气最旺的10个Java问题详解编程语言
- 之间的交互Redis与Java实现交互的探索(redis和java)
- 时间设置解决Java与Redis之间过期时间设置问题(redisjava过期)
- 处理Java解决Redis过期缓存问题(redisjava过期)
- 时间解决Java中Redis设置过期时间的问题(redisjava过期)
- 解决方案Redis中Java过期问题的优化解决方案(redisjava过期)
- 时间解决Redis Java中key的过期时间问题(redisjava过期)
- 时间解决Java使用Redis设置过期时间的问题(redisjava过期)
- 处理解决Java中Redis键过期问题(redisjava过期)
- 时间解决Java使用Redis设置过期时间的问题(redisjava过期)
- 时间解决Java操作Redis数据库中设置过期时间的问题(redisjava过期)
- 时间解决Java程序中Redis过期时间问题(redisjava过期)
- 处理解决Redis中Java实现过期处理问题(redisjava过期)
- 时间解决Java中Redis过期时间问题(redisjava过期)
- Java应用在Linux上乱码的原因及解决方法(java linux乱码)
- Oracle全面支持Java链技术构建数据库应用(java链oracle)
- Java如何帮助掌握Oracle(java了解oracle)
- java解决Eclipse挂掉问题的方法