概述
java直接使用流读取远程图片会有失真的现象,稍作修改。
public static byte[] readImg(String urlOrPath){
Logger logger = Logger.getLogger(FileUtils.class);
byte[] imgBytes = new byte[1024 * 1024];
ByteArrayOutputStream out = new ByteArrayOutputStream();
BufferedInputStream reader = null;
InputStream in = null;
URLConnection conn = null;
File temFile = null;
try {
if(!urlOrPath.startsWith("http:")){
File imgFile = new File(urlOrPath);
if(!imgFile.isFile() || !imgFile.exists() || !imgFile.canRead()){
logger.info("图片不存在或不可读");
return new byte[0];
}
in = new FileInputStream(imgFile);
}else{
URL imgUrl = new URL(urlOrPath);
conn = imgUrl.openConnection();
temFile = new File(new Date().getTime() + ".jpg");
FileOutputStream tem = new FileOutputStream(temFile);
BufferedImage image = ImageIO.read(conn.getInputStream());
ImageIO.write(image, "jpg", tem);
in = new FileInputStream(temFile);
}
reader = new BufferedInputStream(in);
byte[] buffer = new byte[1024];
while(reader.read(buffer) != -1){
out.write(buffer);
}
imgBytes = out.toByteArray();
} catch (Exception e) {
logger.error("读取图片发生异常", e);
}finally{
if(reader != null){
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(in != null){
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(temFile != null){
temFile.delete();
}
}
return imgBytes;
}
最后
以上就是热情黑米为你收集整理的java 读取图片,兼容本地图片路径与http文件的全部内容,希望文章能够帮你解决java 读取图片,兼容本地图片路径与http文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复