java图片坐标处理_java图片处理

Java中进行图像I/O(即读图片和写图片,不涉及到复杂图像处理)一个类包含静态方便定位方法 ImageReaders和 ImageWriters,并进行简单的编码和解码。

特别说明 imageio 文档说明支持bmp 转换的,但是实际上比不支持的,网络上找了很多,有的人说开imagebuffer缓存但是实际上没有作用, 使用opencv转换还是有问题,不知道是java的问题还是本身就不支持,这个问题

困扰了我24小时,最后被迫无奈只能换成tiff格式.

基本代码

/*File f1 = new File("Z:\\java\\1.png");

BufferedImage image = ImageIO.read(f1);

File f2 = new File("Z:\\java\\2.tiff");

ImageIO.write(image, "png", f2);*///对应输入图片的格式

参数化代码

@Test //获取输入输出图片格式

public void f1() {

String readFormats[] = ImageIO.getReaderFormatNames();

String writeFormats[] = ImageIO.getWriterFormatNames();

System.out.println( Arrays.asList(readFormats));

System.out.println( Arrays.asList(writeFormats));

}

@Test

public void f2() {

Iterator iterator = ImageIO.getImageReadersByFormatName("png");

}

/**

* 对图片裁剪,并把裁剪新图片保存

* @param srcPath 读取源图片路径

* @param toPath 写入图片路径

* @param x 剪切起始点x坐标

* @param y 剪切起始点y坐标

* @param width 剪切宽度

* @param height 剪切高度

* @param readImageFormat 读取图片格式

* @param writeImageFormat 写入图片格式

* @throws IOException

*/

public void cropImage(String srcPath,String toPath,

int x,int y,int width,int height,

String readImageFormat,String writeImageFormat) throws IOException{

FileInputStream fis = null ;

ImageInputStream iis =null ;

try{

//读取图片文件

fis = new FileInputStream(srcPath);

Iterator it = ImageIO.getImageReadersByFormatName(readImageFormat);

ImageReader reader = (ImageReader) it.next();

//获取图片流

iis = ImageIO.createImageInputStream(fis);

reader.setInput(iis,true) ;

ImageReadParam param = reader.getDefaultReadParam();

//定义一个矩形

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

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

param.setSourceRegion(rect);

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

//保存新图片

ImageIO.write(bi, writeImageFormat, new File(toPath));

}finally{

if(fis!=null)

fis.close();

if(iis!=null)

iis.close();

}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值