博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java图像裁切
阅读量:7192 次
发布时间:2019-06-29

本文共 1721 字,大约阅读时间需要 5 分钟。

hot3.png

先在D:盘准备好两张图片a.jpg 和 b.jpg

 

import java.awt.Graphics;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class ImageCut {

 /**
  * 缩放图像
  *
  * @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(); // 返回Graphics,可用于绘制预定义的图像。
   g.drawImage(image, 0, 0, null); // 用图像的缩放版本去绘制缩放后的图

   g.dispose(); // 释放此图形的上下文以及它使用的所有系统资源。调用 dispose 之后,就不能再使用 Graphics

       // 对象
   ImageIO.write(tag, "JPEG", new File(result)); // 输出到文件流
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 public static void main(String[] args) {

  ImageCut.scale("D://a.jpg", "D://b.jpg", 4, false);
 }

}

 

 

 

 

图形裁剪方法说明:

CropImageFilter 用于裁剪图像的 ImageFilter 类。此类扩展了基本 ImageFilter 类,可提取现有 Image 中的给定矩形区域,为包含刚提取区域的新图像提供源。也就是它要与 FilteredImageSource 对象结合使用,以生成现有图像的裁剪版本。

CropImageFilter  cropFilter = new CropImageFilter(int x,int y ,int w,int h );//按指定 x、y、w 和 h 参数从源 Image 提取绝对矩形区域

Image   image = Toolkit.getDefaultToolkit().createImage( new FilteredImageSource(image.getSource(), cropFilter));

转载于:https://my.oschina.net/tiancai/blog/90946

你可能感兴趣的文章
Java泛型
查看>>
智能合约语言 Solidity 教程系列1 - 类型介绍
查看>>
从0开始,搭建一个完整的Android音视频通信系统
查看>>
一张图看懂阿里云网络产品[十一]云托付
查看>>
ajax主要步骤(讲解2)
查看>>
idea中对多个maven项目打包并发布到服务器
查看>>
background-position 用法详细介绍
查看>>
windows下时间转换和获取当前时间
查看>>
EM3096二维扫描模块在手持终端设备上的应用
查看>>
HADOOP INSTALL
查看>>
openshift
查看>>
Latex 宏包编写,自定义宏包
查看>>
PHPStorm激活
查看>>
Shiro学习笔记<2>SecurityUtils,SecurityManager,Subject
查看>>
修改数据库密码
查看>>
使用RestTemplate实现rest服务的调用
查看>>
centos7安装docker
查看>>
C++模版函数
查看>>
策略模式
查看>>
我自研主动型氢原子钟将现身空间站
查看>>