用java实现读取一个jpg图片,根据4个坐标,把坐标内的图片保存为另一个jpg图片

我想要知道,具体思路,以及涉及到哪几个类的哪几个具体方法。谢谢!我基础很差别贴一堆乱七八糟的代码... 我想要知道,具体思路,以及涉及到哪几个类的哪几个具体方法。谢谢!我基础很差别贴一堆乱七八糟的代码 展开
 我来答
charlycong
推荐于2017-09-03 · TA获得超过445个赞
知道小有建树答主
回答量:243
采纳率:0%
帮助的人:292万
展开全部
package test.any;

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 CutPicture {
 private String srcpath;
 private String subpath;
 private String imageType;
 private int x;
 private int y;
 private int width;
 private int height;
 public CutPicture() {
 }
 
 public CutPicture(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 void cut() throws IOException {
  FileInputStream is = null;
  ImageInputStream iis = null;
  try {
   is = new FileInputStream(srcpath);
   this.setSrcpath(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);
   ImageIO.write(bi, this.imageType, new File(subpath));
  } finally {
   if (is != null)
    is.close();
   if (iis != null)
    iis.close();
  }
 } 
 
 public static void main(String[] args) {
  CutPicture o = new CutPicture("c:\\粗切编目层详细1.png", 0, 0, 100, 100);
  o.setSubpath("c:\\1.png");
  try {
   o.cut();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式