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图片处理--缩放,切割,类型转换相关推荐

  1. Java图片处理 - 缩放图片

    Java图片处理 - 缩放图片 Java原生代码实现缩放图片 上一章原生代码中执行测试代码: public static void main(String[] args) {/*这儿填写你存放要缩小图 ...

  2. java图片高保真缩放

    public class NarrowImage {/*** @param im* 原始图像* @param resizeTimes* 倍数,比如0.5就是缩小一半,0.98等等double类型* @ ...

  3. Java图片处理 - 创建工具类

    Java图片处理 - 创建工具类 Java原生代码实现工具类 Java原生代码实现使用jdk内部的GIFImageReader.GIFImageWriter等类,maven在编译的时候会提示这是sun ...

  4. Java图片处理 - 复制

    Java图片处理 - 复制 Java处理图片的时候,可以用原生接口,可以直接以第三方接口方式复制图片 以文件复制 public static void copyByStream(File source ...

  5. Android 调用相册 拍照 实现系统控件缩放 切割图片

    android 下如果做处理图片的软件 可以调用系统的控件 实现缩放切割图片 非常好的效果 今天写了一个demo分享给大家. package cn.m15.test;import java.io.By ...

  6. java裁剪图片_java实现图片的缩放和裁剪

    最近要做一个web项目,里面涉及到对图片的缩放和裁剪.原理是这样的,首先先对图片进行缩放,然后,将缩放之后的图片进行裁剪,里面涉及到许多java图片api的应用,代码如下. //参数分别对应了员图片的 ...

  7. java 图片不失真缩放,ico格式图片转换,透明图层,jar->exe

    Java 图片缩放,转ico格式 Java 在转换图片格式为 ico 时 需要引入 image4j 的依赖,这里分享一个自己写好的并通过exe4j 打包好的exe小程序.因为功能太少所以再引入 thu ...

  8. Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理

    前言 java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API ...

  9. [转载]java图片缩放处理

    原文地址:java图片缩放处理作者:jack package com.bluecms.common.util; import java.awt.Image; import java.awt.image ...

最新文章

  1. Error: Discrete value supplied to continuous scale
  2. HTTP基础及基本配置
  3. 简单的FTP应用程序
  4. [转] linux-Centos7安装python3并与python2共存
  5. 值得永久收藏的 C# 设计模式套路(三)
  6. PHP在Tomcat中CSS出错,tomcat找不到css怎么办
  7. MATLAB追加向量
  8. 从虚幻4动画系统与控制器交互理解数据驱动(一)古老的写法
  9. signature=4c9125bac76ec40553ba356eaca47964,2008 SEM Honorary Members Conversations
  10. 升级到NVelocity1.1版本
  11. 十五、K8s helm包管理与应用
  12. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_22-页面查询服务端开发-Dao-基础方法测试...
  13. R计算偏相关性示例教程
  14. Android电量优化全解析 ,赶快收藏备战金九银十
  15. 安卓腾讯Bugly使用教程
  16. walking机器人仿真教程-应用-多点导航结合闹铃播放实现移动闹钟
  17. 每天学一个 Linux 命令(115):accton
  18. 【AAAI 2021】全部接受论文列表(五)
  19. PWA ( Progressiv Web App )初探总结
  20. FOTA与 SOTA介绍

热门文章

  1. Linux下安装Java8
  2. 简单解决用VS编写hello world时命令行一闪而过
  3. 2022-2028年中国辉石行业市场全景调查及发展前景分析报告
  4. 阿里云服务器部署项目
  5. 未授予用户在此计算机上的请求登陆类型处理办法
  6. 半导体与智能汽车行业解决方案
  7. PVD与CVD性能比较
  8. JavaWeb笔记01
  9. 2021年大数据Spark(四):三种常见的运行模式
  10. 【网站汇总】单片机常用通讯协议