Image 在用户未注意到的情况下替换图像
我正在使用JSF2.1.7+Prime Faces+Prime Faces Mobile 我有一个参考图像的页面:Image 在用户未注意到的情况下替换图像,image,jakarta-ee,jsf-2,file-io,Image,Jakarta Ee,Jsf 2,File Io,我正在使用JSF2.1.7+Prime Faces+Prime Faces Mobile 我有一个参考图像的页面: <img src="/charts/chart1.png"/> ImageIO.write将删除现有图像文件并写出新的图像文件。我相信上述情况将导致几毫秒内图像文件不可用,因此web用户将无法看到图像 我的问题是: 1) 是否确实会有一段时间图像暂时不可用 2) 如果是这样的话,有什么可能的解决方案来解决这个问题,这样用户将始终拥有可用的图像 提前感谢。=) 下面是我
<img src="/charts/chart1.png"/>
ImageIO.write将删除现有图像文件并写出新的图像文件。我相信上述情况将导致几毫秒内图像文件不可用,因此web用户将无法看到图像
我的问题是:
1) 是否确实会有一段时间图像暂时不可用
2) 如果是这样的话,有什么可能的解决方案来解决这个问题,这样用户将始终拥有可用的图像
提前感谢。=) 下面是我要做的
1) 首先,我没有替换图像,而是创建了一个新的图像chart2.png
2) 然后我会更改IMG标记中的url以指向一个Servlet
说
在将映射到/charts/showchart
,
在servlet中,我将检查最新可用的PNG,并将其作为响应流传输
通过这种方式,您可以自定义显示图像的方式或内容
public static String saveImage(final String strurl, final String imageFileName){
//assume the url for the image is valid
try {
URL url = new URL(strurl);
HttpURLConnection conn = (HttpURLConnection )url.openConnection();
conn.setConnectTimeout(1000); //1 sec timeout
conn.connect();
File file = new File(imageFileName);
BufferedImage image = ImageIO.read(conn.getInputStream());
ImageIO.write(image, "png", file);
return file.getAbsolutePath();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}