在Grails控制器中,我可以使用
将图像渲染到响应中class MyController {
def getImage = {
BufferedImage image = ImageIO.read('http://example.org/foo.png')
ImageIO.write(captcha, "PNG", response.outputStream)
}
}
在GSP中,我可以使用以下方式渲染此图像:
<img src="${createLink(controller: 'my', action: 'getImage')}"/>
我想编写一个类似的TagLib。
class MyTagLib {
static namespace = "my"
def getImage(attrs ->
BufferedImage image = ImageIO.read('http://example.org/foo.png')
}
}
但我无法弄清楚如何将此图像渲染到响应中。在标记类中,我只能写入out
GrailsPrintWriter
的实例,但ImageIO.write
只能写入OutputStream
。
为了完成,上面的标签将使用
从GSP调用<my:getImage/>
答案 0 :(得分:2)
您可以通过GrailsPrintWriter
创建new WriterOutputStream(out)
的编写器实例。试试这个:
BufferedImage image = ImageIO.read(new URL('http://www.google.de/images/srpr/logo3w.png'))
ImageIO.write(image, "png", new WriterOutputStream(out))
(在grails 2.0中测试)