如何利用imge组件把数据库中图片以二进制流形式返回客户端?

linsy 2008-05-27
如何利用imge组件把数据库中图片以二进制流形式返回客户端?
请给具体思路。
misswolf 2008-05-28
我有一个例子,是tapestry5的
misswolf 2008-05-28
package com.misswolf.tapestry.web.components;

import java.io.InputStream;
import java.util.List;

import org.apache.tapestry.ComponentResources;
import org.apache.tapestry.Link;
import org.apache.tapestry.MarkupWriter;
import org.apache.tapestry.StreamResponse;
import org.apache.tapestry.annotations.BeginRender;
import org.apache.tapestry.annotations.Parameter;
import org.apache.tapestry.dom.Element;
import org.apache.tapestry.ioc.annotations.Inject;
import org.apache.tapestry.ioc.services.TypeCoercer;

import com.misswolf.tapestry.web.pages.ImagePage;
import com.misswolf.tapestry.web.util.JPEGAttachmentStreamResponse;

/**
*       ����: MissWolf
*    ��дʱ��: 2008-5-15
*    �����: Test
*    �������: xxx
*    ��ǰ�汾: v1.0
*    ����޸�: xxx
* ����޸�ʱ��: 2008-5-15 ����10:01:24
**/
public class Image {
@Parameter(required=true)
    private List<Object> _context;

    @Parameter(required=true)
    private int _width;

    @Parameter(required=true)
    private int _height;

   
    @Inject
    private ComponentResources _resources;

    @Inject
    private TypeCoercer _coercer;
   
@SuppressWarnings("unchecked")
    void beginRender(MarkupWriter writer)
    {
// writer.element("a", "href", "http://www.sina.com.cn");
// writer.write("test");
Object[] contextArray = _context == null ? new Object[0] : _context
.toArray();
Object[] params = new Object[contextArray.length + 2];
System.arraycopy(contextArray, 0, params, 2, contextArray.length);
params[0] = new Integer(_width);
params[1] = new Integer(_height);

// generate action link
Link link = _resources.createActionLink("image", false, params);
Element img = writer.element("img", "src", link);
img.attribute("width",String.valueOf(_width));
img.attribute("height",String.valueOf(_height));
    }
    void afterRender(MarkupWriter writer)
    {
        writer.end();
    }
public StreamResponse onImage() {
InputStream input = Image.class.getResourceAsStream("/1.jpg");
return new JPEGAttachmentStreamResponse(input);
}
}
这个是组件类
使用
<t:image  width="200" height="150" context="image" />
linsy 2008-05-28
有T4的吗?
superaxis 2008-06-07
需要设定ContentType

T4中可以做成一个Service

inal BufferedImage image = this.createCaptch(randomStr); //产生随机图片
                //得到图片的数据
                final ImageWriter writer = getImageWriter(mimeType);
                final byte[] bytes = toImageBytes(writer, image);
                //输出图片
                _response.setContentLength(bytes.length);
                final OutputStream out = _response.getOutputStream(new ContentType(mimeType));
                out.write(bytes);
linsy 2008-06-07
登Q!登Q!
Global site tag (gtag.js) - Google Analytics