在进行图片上传的功能开发过程中,在功能中需要对上传的图片进行宽度、高度限制,以下罗列以下获取图片高度、宽度的方式:
一、在java中获取图片宽度、高度:
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
InputStream inputStream;
//通过Spring MVC 获取文件流
MultipartFile logoImg ;
nputStream = logoImg.getInputStream();
//通过文件获取文件流
inputStream = new FileInputStream(new File("文件地址/文件名称"));
BufferedImage buff = ImageIO.read(inputStream );
buff.getWidth();//宽度
buff.getHeight();//高度
* 在使用ImageIO进行图片转换为BufferedImage时,如果图片是使用的 CMYK 颜色表颜色模式时,在进行转换时就会出现 Unsupported Image Type 错误,无法成功转换为BufferedImage,第一种方式:需要用户使用PS将CMYK颜色表的图片转换成RGB颜色表图片再进行上传。第二种方式:在服务端将CMYK颜色表图片转换成RGB颜色表图片保存到服务器本地,然后再通过ImageIO读取本地新写的RGB的图片来获取图片高度和宽度,这种方式对服务器端要求比较高。
二、在JS中获取图片宽度、高度:
<img id="imgLab" src="http://www.iteye.com/upload/logo/user/975107/44f2f52c-e1e8-318d-ae43-df2fde2dcb8e.jpg" />
<script type="text/javascript">
var imgUrl = $("#imgLab").attr("src");
var img = new Image();
img.src = url;
var imgWidth = img.naturalWidth;
var imgHeight = img.naturalHeight;
if(imgWidth == undefined ){
imgWidth = img.width;
}
if(imgHeight == undefined ){
imgHeight = img.height;
}
imgWidth;//图片宽度
imgHeight;//图片高度
</script>
基于jQuery获取图片宽度、高度,经过测试以上JS方式兼容大部分浏览器,在IE 7、IE 8中不支持naturalWidth、naturalHeight获取图片宽度和高度,但是在IE 7、IE 8中可以支持通过width、height方式获取图片宽度和高度。
* js方式不能获取file选择的本地图片的图片宽度和高度,图片必须是互联网中的图片才能通过new Image()来获取图片宽度和高度