publicclassImageReduce{/*对图像进行缩放处理*/publicvoidscale(StringsrcImageFile,Stringresult,doublescale,booleanflag){try{BufferedImagesrc=ImageIO.read(newFile(srcImageFi...
public class ImageReduce {
/*对图像进行缩放处理*/
public void scale(String srcImageFile, String result, double scale,
boolean flag) {
try {
BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件
int width = src.getWidth(); // 得到源图宽
int height = src.getHeight(); // 得到源图长
if (flag) {
// 放大
width = (int)(width * scale);
height = (int)(height * scale);
} else {
// 缩小
width = (int)(width / scale);
height = (int)(height / scale);
}
Image image = src.getScaledInstance(width, height,
Image.SCALE_DEFAULT); //★★★★
BufferedImage tag = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(image, 0, 0, null); // 绘制缩小后的图
g.dispose();
ImageIO.write(tag, "JPEG", new File(result));// 输出到文件流
} catch (IOException e) {
e.printStackTrace();
}
}
}
我在这个类的main方法中调用这个方法运行一切正常,但是通过项目里的一个serlvet调用(传的参数都是一模一样的)这个方法(先接收保存上传的图片文件,然后调用这个方法),在运行到★★★★这行的时候,程序就自动停止了,在eclipse里面debugger调试到这句代码的时候,调试的那几个按钮(就是step into,step over,step return这些)也会变成灰色不可用,然后代码就停止执行了,而且这个过程中也未捕获到任何异常。
请问这个是怎么回事~~~~~
回2楼,在那句前加输出语句是可以执行的,但是在后面加,就执行不到了
回4楼,IOException换成了Exception也还是没捕获到任何异常。。。
回5楼,src.getWidth()和src.getHeight()我debugger进去查看变量,这里是能获取到值的。。
展开