我正在使用Tapestry开发我的第一个项目,我即将完成,除了图像..
我想要什么?我只需在应用程序外显示图片,例如: /home/app/images/image.jpg
我尝试了什么?我一直在“谷歌搜索”并阅读Tapestry5论坛,我发现了这一点:http://wiki.apache.org/tapestry/Tapestry5HowToStreamAnExistingBinaryFile
我按照步骤创建了类但是我需要显示嵌入在另一个页面上的图像(所以我不能使用ImagePage),我试过这个:
在页面java类
public StreamResponse getImage() {
InputStream input = DetallesMultimedia.class
.getResourceAsStream("/home/santi/Escritorio/evolution-of-mario.jpg"); //On application, i will retrieve this from DB
return new JPEGInline(input,"hellow");
}
在页面模板上
...
<img src="${image}" alt:image/>
...
或
...
${image}
...
很明显,这不起作用,我真的不知道怎么能这样做。我读到了关于在一个事件上加载图像的事情(在上面的HowTo中回复了那个事件上的OutputStream),但是我的英语非常糟糕(我相信你已经注意到了)我不明白我怎么能那样做。
你能帮帮我吗?谢谢大家。
答案 0 :(得分:0)
我从未在维基页面上看过这些示例。下面是一些关于如何使用StreamResponse在类路径上加载图像的代码。
@Inject
private ComponentResources resources;
@OnEvent(value = "GET_IMAGE_STREAM_EVENT")
private Object getProfilePic() throws Exception {
InputStream openStream = DetallesMultimedia.class.getResourceAsStream("/home/santi/Escritorio/evolution-of-mario.jpg");
byte[] imageBytes = IOUtils.toByteArray(openStream);
final ByteArrayInputStream output = new ByteArrayInputStream(imageBytes);
final StreamResponse response = new StreamResponse() {
public String getContentType() {
"image/jpegOrPngOrGif";
}
public InputStream getStream() throws IOException {
return output;
}
public void prepareResponse(Response response) {
// add response headers if you need to here
}
};
return response;
}
public String getPicUrl() throws Exception {
return resources.createFormEventLink("GET_IMAGE_STREAM_EVENT");
}
在你的模板中:
<img src="${picUrl}"/>