JAVA图片处理--缩放,切割,类型转换
import java.io.*; import java.awt.*; import java.awt.image.*; import java.awt.Graphics; import java.awt.color.ColorSpace; import javax.imageio.ImageIO;public class ChangeImageSize {/** *//*** 缩放图像* @param srcImageFile 源图像文件地址* @param result 缩放后的图像地址* @param scale 缩放比例* @param flag 缩放选择:true 放大; false 缩小;*/public static void scale(String srcImageFile, String result, int scale, boolean flag){try{BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件int width = src.getWidth(); // 得到源图宽int height = src.getHeight(); // 得到源图长if (flag){// 放大width = width * scale;height = height * scale;}else{// 缩小width = width / scale;height = height / scale;}Image image = src.getScaledInstance(width, height, Image.SCALE_DEFAULT);BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics g = tag.getGraphics();g.drawImage(image, 0, 0, null); // 绘制缩小后的图 g.dispose();ImageIO.write(tag, "JPEG", new File(result));// 输出到文件流 }catch (IOException e){e.printStackTrace();}}/** *//*** 图像切割* @param srcImageFile 源图像地址* @param descDir 切片目标文件夹* @param destWidth 目标切片宽度* @param destHeight 目标切片高度*/public static void cut(String srcImageFile, String descDir, int destWidth, int destHeight){try{Image img;ImageFilter cropFilter;// 读取源图像BufferedImage bi = ImageIO.read(new File(srcImageFile));int srcWidth = bi.getHeight(); // 源图宽度int srcHeight = bi.getWidth(); // 源图高度if (srcWidth > destWidth && srcHeight > destHeight){Image image = bi.getScaledInstance(srcWidth, srcHeight, Image.SCALE_DEFAULT);destWidth = 200; // 切片宽度destHeight = 150; // 切片高度int cols = 0; // 切片横向数量int rows = 0; // 切片纵向数量// 计算切片的横向和纵向数量if (srcWidth % destWidth == 0){cols = srcWidth / destWidth;}else{cols = (int) Math.floor(srcWidth / destWidth) + 1;}if (srcHeight % destHeight == 0){rows = srcHeight / destHeight;}else{rows = (int) Math.floor(srcHeight / destHeight) + 1;}// 循环建立切片// 改进的想法:是否可用多线程加快切割速度for (int i = 0; i < rows; i++){for (int j = 0; j < cols; j++){// 四个参数分别为图像起点坐标和宽高// 即: CropImageFilter(int x,int y,int width,int height)cropFilter = new CropImageFilter(j * 200, i * 150, destWidth, destHeight);img = Toolkit.getDefaultToolkit(), .createImage(new FilteredImageSource(image.getSource(), cropFilter));BufferedImage tag = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);Graphics g = tag.getGraphics();g.drawImage(img, 0, 0, null); // 绘制缩小后的图 g.dispose();// 输出为文件ImageIO.write(tag, "JPEG", new File(descDir + "pre_map_" + i + "_" + j + ".jpg"));}}}}catch (Exception e){e.printStackTrace();}}/** *//*** 图像类型转换 GIF->JPG GIF->PNG PNG->JPG PNG->GIF(X)*/public static void convert(String source, String result){try{File f = new File(source);f.canRead();f.canWrite();BufferedImage src = ImageIO.read(f);ImageIO.write(src, "JPG", new File(result));}catch (Exception e){// TODO Auto-generated catch block e.printStackTrace();}}/** *//*** 彩色转为黑白* @param source* @param result*/public static void gray(String source, String result){try{BufferedImage src = ImageIO.read(new File(source));ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);ColorConvertOp op = new ColorConvertOp(cs, null);src = op.filter(src, null);ImageIO.write(src, "JPEG", new File(result));}catch (IOException e){e.printStackTrace();}}/** *//*** @param args*/public static void main(String[] args){scale("D:\100CASIO\CIMG0001.JPG","C:\Documents and Settings\ibm\桌面\image.jpg",10,false);}}
文章转自:http://www.cnblogs.com/chinaqiao/archive/2009/06/04/1496170.html
转载于:https://www.cnblogs.com/dreammyle/p/3992983.html
JAVA图片处理--缩放,切割,类型转换相关推荐
- Java图片处理 - 缩放图片
Java图片处理 - 缩放图片 Java原生代码实现缩放图片 上一章原生代码中执行测试代码: public static void main(String[] args) {/*这儿填写你存放要缩小图 ...
- java图片高保真缩放
public class NarrowImage {/*** @param im* 原始图像* @param resizeTimes* 倍数,比如0.5就是缩小一半,0.98等等double类型* @ ...
- Java图片处理 - 创建工具类
Java图片处理 - 创建工具类 Java原生代码实现工具类 Java原生代码实现使用jdk内部的GIFImageReader.GIFImageWriter等类,maven在编译的时候会提示这是sun ...
- Java图片处理 - 复制
Java图片处理 - 复制 Java处理图片的时候,可以用原生接口,可以直接以第三方接口方式复制图片 以文件复制 public static void copyByStream(File source ...
- Android 调用相册 拍照 实现系统控件缩放 切割图片
android 下如果做处理图片的软件 可以调用系统的控件 实现缩放切割图片 非常好的效果 今天写了一个demo分享给大家. package cn.m15.test;import java.io.By ...
- java裁剪图片_java实现图片的缩放和裁剪
最近要做一个web项目,里面涉及到对图片的缩放和裁剪.原理是这样的,首先先对图片进行缩放,然后,将缩放之后的图片进行裁剪,里面涉及到许多java图片api的应用,代码如下. //参数分别对应了员图片的 ...
- java 图片不失真缩放,ico格式图片转换,透明图层,jar->exe
Java 图片缩放,转ico格式 Java 在转换图片格式为 ico 时 需要引入 image4j 的依赖,这里分享一个自己写好的并通过exe4j 打包好的exe小程序.因为功能太少所以再引入 thu ...
- Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理
前言 java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API ...
- [转载]java图片缩放处理
原文地址:java图片缩放处理作者:jack package com.bluecms.common.util; import java.awt.Image; import java.awt.image ...
最新文章
- Error: Discrete value supplied to continuous scale
- HTTP基础及基本配置
- 简单的FTP应用程序
- [转] linux-Centos7安装python3并与python2共存
- 值得永久收藏的 C# 设计模式套路(三)
- PHP在Tomcat中CSS出错,tomcat找不到css怎么办
- MATLAB追加向量
- 从虚幻4动画系统与控制器交互理解数据驱动(一)古老的写法
- signature=4c9125bac76ec40553ba356eaca47964,2008 SEM Honorary Members Conversations
- 升级到NVelocity1.1版本
- 十五、K8s helm包管理与应用
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_22-页面查询服务端开发-Dao-基础方法测试...
- R计算偏相关性示例教程
- Android电量优化全解析 ,赶快收藏备战金九银十
- 安卓腾讯Bugly使用教程
- walking机器人仿真教程-应用-多点导航结合闹铃播放实现移动闹钟
- 每天学一个 Linux 命令(115):accton
- 【AAAI 2021】全部接受论文列表(五)
- PWA ( Progressiv Web App )初探总结
- FOTA与 SOTA介绍