Java图片处理
来源:互联网 发布:电子数据交换 过时 编辑:程序博客网 时间:2024/06/05 19:01
Java图片处理 - 缩放图片
Java原生代码实现缩放图片
上一章原生代码中执行测试代码:
public static void main(String[] args) { /*这儿填写你存放要缩小图片的文件夹全地址*/ String src = "C:/test2.jpg" ; /*这儿填写你转化后的图片存放的文件夹*/ String tar = "C:/test2_width_200.jpg"; /* 根据宽度缩放 */ ImageUtil.widthCutting(src, tar, 200); }
具体实现可以看一下以下代码:
/* 原始图像的宽度和高度 */ int width = im.getWidth(); int height = im.getHeight(); //计算压缩比例 float resizeTimes = (float)targetWidth / (float)width; BigDecimal bd = new BigDecimal((double)resizeTimes); // (1:小数点位数, 4:表示四舍五入,可以选择其他舍值方式,例如去尾等等. bd = bd.setScale(1 ,4); resizeTimes = bd.floatValue(); /* 调整后的图片的宽度和高度 - 按照压缩比例计算出新的宽度和高度 */ int toWidth = (int) (width * resizeTimes); int toHeight = (int) (height * resizeTimes); /* 新生成结果图片 */ result = new BufferedImage(toWidth, toHeight, BufferedImage.TYPE_INT_RGB); result.getGraphics().drawImage( im.getScaledInstance(toWidth, toHeight, java.awt.Image.SCALE_SMOOTH), 0, 0, null);
最核心的是将图片按比例进行缩小,如果你只想缩小50%,那么你就可以直接将resizeTimes设置成0.5f
,然后去计算最终宽高。
使用im4java调用ImageMagick缩放图片
上面的一堆计算是不是很麻烦,其实有更简单的方式,就是用im4java调用第三方库实现,处理跟方便
测试代码:
public static void main(String[] args) throws Exception { String src = "c:/test2.jpg"; String target = "c:/test2_70_ratio.jpg"; resizeImage(src, target, "70%"); System.out.println("完成");}
/** * 改变图片大小比例 * @param path 原文件路径 * @param des 目标文件路径 * @param ratio 缩放比例 * @throws Exception */public static void resizeImage(String path, String des, String ratio) throws Exception {// 创建目标文件 createDirectory(des); IMOperation op = new IMOperation(); op.addImage(path); op.addRawArgs(ratio); op.addImage(des); ConvertCmd cmd = (ConvertCmd) getImageCommand("convert"); cmd.run(op);}
大家还可以参考我专栏中的其他文章:
(1)Java图片处理 - 安装ImageMagick库使用convert命令
(2)Java图片处理 - 创建工具类
(3)Java图片处理 - 复制
(4)Java图片处理 - 缩放图片
(5)Java图片处理 - gif图获取一帧图片
0 0
- java处理图片
- Java的图片处理
- java图片处理
- JAVA图片处理
- java图片处理
- java处理图片
- Java 图片 处理
- java swing 图片处理
- Java图片处理
- Java 图片处理
- Java 图片处理,水印
- java图片处理代码
- JAVA处理图片
- JAVA图片透明处理
- java处理图片
- java 图片处理
- Java图片的处理
- java图片处理
- CSS 盒子模型(Box Model)和轮廓(outline)
- Linux多线程——使用互斥量同步线程
- C++三种方法求解两个数最大公因数和最小公倍数
- 高中OJ3735. 【Usaco2014Open银组】里程计
- 用三种方法(辗转相除法,相减法,穷举法)求两个数的最大公约数,仅供参考。
- Java图片处理
- Linux多线程——使用信号量同步线程
- spring-core-4.04 源码编译过程记录
- 查看LINUX进程内存占用情况(转)
- AsyncTask实时跟进进度(倒数计时器)
- Windows下FFmpeg快速入门
- 老版本的ACE库不兼容Win10操作系统
- About Git commands
- Android jni