java上传图片剪切工具类

package com.up.util;

import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
public class OperateImage {

 private String srcpath; //原图路径
 private String subpath; //目标存放路径
 private String imageType; //图片类型
 private int x;
 private int y;
 private int width; //图片目标宽度
 private int height; //图片目标高度 

 public OperateImage() {
 }

 public OperateImage(String srcpath, int x, int y, int width, int height) {
  this.srcpath = srcpath;
  this.x = x;
  this.y = y;
  this.width = width;
  this.height = height;
 }

 public int getHeight() {
  return height;
 }

 public void setHeight(int height) {
  this.height = height;
 }

 public String getSrcpath() {
  return srcpath;
 }

 public void setSrcpath(String srcpath) {
  this.srcpath = srcpath;
  if(srcpath != null) {
   this.imageType = srcpath.substring(srcpath.indexOf(".")+1, srcpath.length());
  }
 }

 public String getSubpath() {
  return subpath;
 }

 public void setSubpath(String subpath) {
  this.subpath = subpath;
 }

 public int getWidth() {
  return width;
 }

 public void setWidth(int width) {
  this.width = width;
 }

 public int getX() {
  return x;
 }

 public void setX(int x) {
  this.x = x;
 }

 public int getY() {
  return y;
 }

 public void setY(int y) {
  this.y = y;
 }

 public String getImageType() {
  return imageType;
 }

 public void setImageType(String imageType) {
  this.imageType = imageType;
 }

 public boolean cut() throws IOException {
	  FileInputStream is = null;
	  ImageInputStream iis = null;
	  boolean bol = false;
	  try {
		   is = new FileInputStream(srcpath);
		   Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName(this.imageType);
		   ImageReader reader = it.next();
		   iis = ImageIO.createImageInputStream(is);
		   reader.setInput(iis, true);
		   ImageReadParam param = reader.getDefaultReadParam();
		   Rectangle rect = new Rectangle(x, y, width, height);
		   param.setSourceRegion(rect);
		   BufferedImage bi = reader.read(0, param);
           //实际高度大于目标高度或者实际宽度大于目标宽度则进行剪切
           File o = new File(srcpath);
           BufferedImage bii = ImageIO.read(o);
           int itempWidth = bii.getWidth(); //实际宽度
           int itempHeight = bii.getHeight(); //实际高度
           if ((itempHeight > height) || (itempWidth > width)) {
    		   ImageIO.write(bi, this.imageType, new File(subpath));
    		   bol = true;
           }
	  } finally {
	   if (is != null)
	    is.close();
	   if (iis != null)
	    iis.close();
	  }
	  return bol;
 } 

 public static void main(String[] args) {
  OperateImage o = new OperateImage("E:\\testdata\\1.jpg", 0, 0, 100, 100);
  o.setSubpath("E:\\testdata\\2.jpg");
  o.setImageType("jpg");
  try {
   o.cut();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}
时间: 2024-10-06 22:47:44

java上传图片剪切工具类的相关文章

UrlUtils工具类,Java URL工具类,Java URL链接工具类

UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ?Copyright 蕃薯耀 2017年7月15日 http://www.cnblogs.com/fanshuyao/ Java代码   import java.util.Ha

Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ?Copyright 蕃薯耀 2017年9月13日 http://www.cnblogs.com/fanshuyao/ 直接上代码: import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.ref

[精品] 收集的27个java开发常用工具类.基本满足开发需求

原文:[精品] 收集的27个java开发常用工具类.基本满足开发需求 源代码下载地址:http://www.zuidaima.com/share/1596028005993472.htm 最近从网上收集的java开发常用的工具类,分享给大家.基本满足开发需求.推荐给热爱最代码以及java的牛牛们.   每个类都有注释的,欢迎大家可以下载使用. 字符编码:CharTools, base64:Base64 *.java Md5加密:  MD5*.java 上传:*Uploader* 生成缩略图类:T

java MD5数据加密工具类

package com.wetuo.util; import java.security.MessageDigest; /**  * 数据加密工具类  * @author wzp  *  */ public class DataUtil { public static String md5(String str) { StringBuffer buffer = new StringBuffer(); char[] chars = { '0', '1', '2', '3', '4', '5', '

Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类

Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类   =========================== ?Copyright 蕃薯耀 2017年9月25日 http://www.cnblogs.com/fanshuyao/ 一.问题描述 很多对外网站的某些内容都需要过滤敏感词,避免政治与色@情上的问题. 二.解决方案 使用词库进行匹配过滤成 * (星号) Java 敏感词工具类及敏感词词库见附件. 1.下载后,有几个类,主要为WordFilter 这个工具类,使用方法如下

Redis Java客户端jedis工具类以及Redis实现的跨jvm的锁

Redis Java客户端jedis工具类以及Redis实现的跨jvm的锁 最近项目中使用redis,学习了一下,client端使用jedis-2.1.0 首先是一个redis实现的跨jvm的lock, 接着是一个简单封装的工具类,也对pipeline处理进行了几个常用的封装 然后是对应Spring的相关配置 Java代码   public class RedisLock { /** 加锁标志 */ public static final String LOCKED = "TRUE";

java文件处理工具类

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileRea

java格式处理工具类

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.math.BigInteger; import java.text.Par

java 读取配置文件工具类 (how to read values from properties file in java)

Java 读取配置文件工具类 使用 java.util.Properties import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class PropertiesReader { private static Properties prop; static { reload(); } private static void reload() { prop = new