在进行图片上传的功能开发过程中,在功能中需要对上传的图片进行宽度、高度限制,以下罗列以下获取图片高度、宽度的方式:
一、在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()来获取图片宽度和高度