打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
java图片上传剪切图片整套实现方法(2)

html页面:http://odyniec.net/projects/imgareaselect/

2、上传好图片后,要根据自己的需要进行剪切,处理方法为:

//剪切图片
  public String clippingPicture(){
   HttpServletRequestrequest = ServletActionContext.getRequest();
   HttpSessionsession = request.getSession();
   try{
    StringpowerStr = session.getAttribute("power").toString();
    intpower=0;
    if(powerStr==null){
     request.setAttribute("failMsg","异常操作,用户已退出,请重新登录!");
     return"login";
    }else{
     power= Integer.parseInt(powerStr);
    }
    if(power==2){
     //对图片进行剪切处理
     Driver_detaildetail = dds.getDriver_detailByDriverId(driverId);
     Stringpimgurl = detail.getImageUrl();
       //要删除的图片绝对路径
     StringsavePath =ServletActionContext.getServletContext().getRealPath("");
     //获取项目根路径  
     savePath= savePath.replace("\", "\\\\");
     savePath= savePath + "\\\\uploadImages\\\\";
       String imgAbl= savePath+pimgurl;
       OperateImageo = new OperateImage( x , y , width , height );
       o.setSrcpath(imgAbl);
       o.setSubpath(imgAbl);
       o.cut();
       //对图片进行缩放处理
       Driver_detaildetail1 = dds.getDriver_detailByDriverId(driverId);
     Stringpimgurl1 = detail1.getImageUrl();
       //要删除的图片绝对路径
     StringsavePath1 =ServletActionContext.getServletContext().getRealPath("");
     //获取项目根路径  
     savePath1= savePath1.replace("\", "\\\\");
     savePath1= savePath1 + "\\\\uploadImages\\\\";
       StringimgAbl1 = savePath1+pimgurl1;
       Resize r= newResize();
       BufferedImageb;
       b =ImageIO.read(new FileInputStream(imgAbl1));
       BufferedImagebb = r.rize(b,100,100);
       ImageIO.write(bb,"jpg" , new File(imgAbl1));
     return"showDriversAction";
    }else{
     request.setAttribute("failMsg","异常操作,用户已退出,请重新登录!");
     return"login";
    }
   }catch(CannotCreateTransactionException e) {
    
    request.setAttribute("failMsg","数据库连接失败,请联系管理员");
    return"login";
    
   }catch(HibernateException e) {
    request.setAttribute("failMsg","更改司机头像出错,请重新操作");
    return"showDriversAction";
   }catch(Exception e) {
    request.setAttribute("failMsg","更改司机头像出错,请重新操作");
    return"showDriversAction";
   }
   
  }

 

在方法中用到了几个关键的类:

OperateImage.java剪切图片类:

package mobi.zhangsheng.jiejia.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;

import mobi.zhangsheng.jiejia.domain.Company_detail;

import org.apache.struts2.ServletActionContext;

public class OperateImage {
  // ===源图片路径名称如:c:\1.jpg
    privateString srcpath;

    //===剪切图片存放路径名称。如:c:\2.jpg

    privateString subpath ;

    //===剪切点x坐标
    private intx ;

    privateint y ;

    //===剪切点宽度

    privateint width ;

    privateint height ;

    publicOperateImage() {

    }

    publicOperateImage( int x, int y, int width, int height) {

    this.x =x ;

    this.y =y ;

   this.width = width ;

   this.height = height ;

    }

  

    publicvoid cut() throws IOException {

   FileInputStream is = null ;

   ImageInputStream iis = null ;

    try {

    //读取图片文件

    is = newFileInputStream(srcpath);
  

    Iterator< ImageReader > it =ImageIO.getImageReadersByFormatName("jpg");

   ImageReader reader = it.next();
    //获取图片流
 

    iis =ImageIO.createImageInputStream(is);

  

   reader.setInput(iis, true);


   ImageReadParam param = reader.getDefaultReadParam();

  
 
    Rectanglerect = new Rectangle(x, y, width, height);

    // 提供一个BufferedImage,将其用作解码像素数据的目标。

   param.setSourceRegion(rect);

  
   
   BufferedImage bi = reader.read(0 ,param);

    //保存新图片

   ImageIO.write(bi, "jpg" , new File(subpath));

    } finally{

    if (is !=null)

   is.close() ;

    if (iis!= null)

   iis.close();

    }

    }

    publicint getHeight() {

    returnheight;

    }

    publicvoid setHeight(int height) {

    this.height = height;

    }

    publicString getSrcpath() {

    returnsrcpath;

    }

    publicvoid setSrcpath(String srcpath) {

    this.srcpath = srcpath;

    }

    publicString getSubpath() {

    returnsubpath;

    }

    publicvoid setSubpath(String subpath) {

    this.subpath = subpath;

    }

    publicint getWidth(){

    returnwidth;

    }

    publicvoid setWidth(int width) {

    this.width = width;

    }

    publicint getX() {

    returnx;

    }

    publicvoid setX( int x) {

    this .x =x;

    }

    publicint getY() {

    returny;

    }

    publicvoid setY(int y) {

    this .y =y;

    }

//    publicstatic void main(String[] args) throws Exception {
//
//    Stringname = "F:\\myeclipse\\Tomcat6.0\\webapps\\daijiayun\\uploadImages\\2012092113512099056.jpg";
//
//   OperateImage o = new OperateImage( 50 , 50 , 150 , 150 );
//
//   o.setSrcpath(name);
//
//   o.setSubpath( "F:\\myeclipse\\Tomcat6.0\\webapps\\daijiayun\\uploadImages\\2012092113512099056.jpg");
//   
//   o.cut();
//   
//   
//
 //   }

}

 

 

Resize 缩放图片类,将图片统一缩放为100×100的大小:

package mobi.zhangsheng.jiejia.util;

import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.apache.commons.io.FileUtils;

public class Resize {
 BufferedImage bufImage;
 int width;
 int height;

 public Resize() {
  // TODO Auto-generatedconstructor stub
 }

 public Resize(String srcPath, int width, intheight) {
  this.width = width;
  this.height = height;
  try {
   this.bufImage= ImageIO.read(new File(srcPath));
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 public static BufferedImage rize(BufferedImagesrcBufImage, int width,
   int height){

  BufferedImage bufTarget =null;

  double sx = (double) width /srcBufImage.getWidth();
  double sy = (double) height /srcBufImage.getHeight();

  int type =srcBufImage.getType();
  if (type ==BufferedImage.TYPE_CUSTOM) {
   ColorModel cm= srcBufImage.getColorModel();
   WritableRasterraster = cm.createCompatibleWritableRaster(width,
     height);
   booleanalphaPremultiplied = cm.isAlphaPremultiplied();
   bufTarget =new BufferedImage(cm, raster, alphaPremultiplied, null);
  } else
   bufTarget =new BufferedImage(width, height, type);

  Graphics2D g =bufTarget.createGraphics();
  g.setRenderingHint(RenderingHints.KEY_RENDERING,
    RenderingHints.VALUE_RENDER_QUALITY);
  g.drawRenderedImage(srcBufImage,AffineTransform.getScaleInstance(sx,
    sy));
  g.dispose();
  return bufTarget;
 }
 
// public static void main(String[] args) {
//  
//  Resize r= new Resize();
//  BufferedImage b;
//  try {
//   b =ImageIO.read(new FileInputStream("f:\\flower2.jpg"));
//   BufferedImagebb = Resize.rize(b,100,100);
//   ImageIO.write(bb,"jpg" , new File("f:\\flower222222.jpg"));
//   System.out.println(bb);
//  } catch(FileNotFoundException e) {
//   // TODOAuto-generated catch block
//   e.printStackTrace();
//  } catch (IOException e){
//   // TODOAuto-generated catch block
//   e.printStackTrace();
//  }
// }

}

 

希望这个功能够为大家提供帮助,这些是主要的函数,如需要帮助QQ:1037139984。

写的不够详细,还请大家见谅。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java 生成图片缩略图
Java实现网页截图技术,根据URL得到网页快照(已测试)
Java中图片压缩处理
二维码Java开发(笔记)
图片等比缩放及截取的java实现
java图片缩放剪切处理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服