上传的图片都是要转的,因为上传者不一定都有那么大的图片,这里有个压缩大小的例子
调用的时候
PictureTool pic = new PictureTool();
//file:图片源文件
//saveSmallFile:图片转换后存储file
//其他参数是转换的宽,高,以及格式
HTML
HEAD
TITLE New Document /TITLE
META NAME="Generator" CONTENT="EditPlus"
META NAME="Author" CONTENT=""
META NAME="Keywords" CONTENT=""
META NAME="Description" CONTENT=""
/HEAD
script
function DrawImage(ImgD){
var image=new Image();
image.src=ImgD.src;
if(image.width maxW || image.height maxH){
alert("图片尺寸过大,请选择" + maxW + "*" + maxH + "的图片!");
return;
}
if(image.width0 image.height0){
flag=true;
if(image.width/image.height= preW/preH){
if(image.widthpreW){
ImgD.width=preW;
ImgD.height=(image.height*preW)/image.width;
}else{
ImgD.width=image.width;
ImgD.height=image.height;
ImgD.alt=image.width+"X"+image.height;
else{
if(image.heightpreH){
ImgD.height=preH;
ImgD.width=(image.width*preH)/image.height;
function checkFormat(filePath) {
var i = filePath.lastIndexOf('.');
var len = filePath.length;
var str = filePath.substring(len,i+1);
var extName = "JPG,GIF,PNG,JPEG,BMP";
if(extName.indexOf(str.toUpperCase()) 0) {
alert("请选择正确的图片文件!");
return false;
return true;
function FileChange(Value){
if(checkFormat(Value)){
flag=false;
document.getElementById("uploadimage").width=10;
document.getElementById("uploadimage").height=10;
document.getElementById("uploadimage").alt="";
document.getElementById("uploadimage").src=Value;
/script
BODY
brIMG id=uploadimage height=0 width=0 src="" onload="javascript:DrawImage(this);"
/BODY
/HTML
截取点代码片断,你自己看着改
修改图片大小用getScaledInstance方法
BufferedImage?bimg?=?null;
Image?img?=?null;
int?width,?height;
try?{
bimg?=?ImageIO.read(u);
if(bimg.getWidth()?bimg.getHeight())
{
height?=?bimg.getHeight()?*?width?/?bimg.getWidth();
else
width?=?bimg.getWidth()?*?height?/?bimg.getHeight();
img?=?bimg.getScaledInstance(width,?height,?Image.SCALE_DEFAULT);
pre_image?=?bimg.getScaledInstance(width?*?10,?height?*?10,?Image.SCALE_DEFAULT);
}?catch?(IOException?e)?{
e.printStackTrace();
可以使用Draw这个类,通过改变像素来改变存储大小,实例如下:
public?static?boolean?compressPic(String?srcFilePath,?String?descFilePath)?throws?IOException?{
File?file?=?null;
BufferedImage?src?=?null;
FileOutputStream?out?=?null;
ImageWriter?imgWrier;
ImageWriteParam?imgWriteParams;
//?指定写图片的方式为?jpg
imgWrier?=?ImageIO.getImageWritersByFormatName("jpg").next();
imgWriteParams?=?new?javax.imageio.plugins.jpeg.JPEGImageWriteParam(
null);
//?要使用压缩,必须指定压缩方式为MODE_EXPLICIT
imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);
//?这里指定压缩的程度,参数qality是取值0~1范围内,
imgWriteParams.setCompressionQuality((float)?1);
imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);
ColorModel?colorModel?=ImageIO.read(new?File(srcFilePath)).getColorModel();//?ColorModel.getRGBdefault();
//?指定压缩时使用的色彩模式
//??imgWriteParams.setDestinationType(new?javax.imageio.ImageTypeSpecifier(
imgWriteParams.setDestinationType(new?javax.imageio.ImageTypeSpecifier(
if?(isBlank(srcFilePath))?{
return?false;
}?else?{
file?=?new?File(srcFilePath);System.out.println(file.length());
src?=?ImageIO.read(file);
out?=?new?FileOutputStream(descFilePath);
imgWrier.reset();
//?必须先指定?out值,才能调用write方法,?ImageOutputStream可以通过任何
//?OutputStream构造
imgWrier.setOutput(ImageIO.createImageOutputStream(out));
//?调用write方法,就可以向输入流写图片
imgWrier.write(null,?new?IIOImage(src,?null,?null),
imgWriteParams);
out.flush();
out.close();
}?catch?(Exception?e)?{
return?true;
public?static?boolean?isBlank(String?string)?{
if?(string?==?null?||?string.length()?==?0?||?string.trim().equals(""))?{
看你想按图片的实际大小、还是按当前组件(ballgame)的大小.
按实际大小
g.drawImage(sun, sun.getWidth(), sun.getHeight(),null);
组件大小
g.drawImage(sun, getWidth(), getHeight(),null);
以上就是土嘎嘎小编为大家整理的java限制图片大小代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!