裁剪图片的工具类是在网上找的。最后传入相应参数后,裁剪的和预览的位置,宽高,等完全不一样。求大神怎么破
裁剪工具类如下:
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 ImageCut {
/**
* 图片切割
*
* @param imagePath
* 原图地址
* @param x
* 目标切片坐标 X轴起点
* @param y
* 目标切片坐标 Y轴起点
* @param w
* 目标切片 宽度
* @param h
* 目标切片 高度
*/
public static void cut(int x1, int y1, int width, int height,String sourcePath) {
FileInputStream is = null;
ImageInputStream iis = null;
try {
is = new FileInputStream(sourcePath.trim());
String fileSuffix = sourcePath.substring(sourcePath.trim()
.lastIndexOf(".")+1);
Iterator<ImageReader> it = ImageIO
.getImageReadersByFormatName(fileSuffix.trim());
ImageReader reader = it.next();
iis = ImageIO.createImageInputStream(is);
reader.setInput(iis, true);
ImageReadParam param = reader.getDefaultReadParam();
Rectangle rect = new Rectangle(x1, y1, width, height);
param.setSourceRegion(rect);
BufferedImage bi = reader.read(0, param);
ImageIO.write(bi,fileSuffix.trim(),new File("d:123.jpg"));
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
is = null;
}
if (iis != null) {
try {
iis.close();
} catch (IOException e) {
e.printStackTrace();
}
iis = null;
}
}
}
}
调用工具类代码如下:
//裁剪图片
ImageCut imageCut = new ImageCut();
imageCut.cut(x1, y1,x2, y2, realPath);
jsp页面预览图如下:
结果裁剪出来的图却是这个样子的。坐标点和图像大小都不一致。唯一一致的就是这个图片是201*208的(和我传的宽和高一致)
虽然有6个参数 但我反复调换过这6个参数裁剪出来的图片还是和预览的不一样。求大神怎么破
------解决方案--------------------
找文档啊,老大,光找到工具不是目的,得有 doc 啊。再说以后别人可能还要维护你做的东东。
最起码也得有个 demo 在手吧?
咱总不能仅凭猜测就在项目里用这个东东吧。