前台:
<tr class="t s">
<td class="l" width="120" style="color:#133A7B">图片:</td>
</tr>
<tr>
<td valign="top" class="name" style="font:12px;width:400px;height:400px;" >
<image src="/foi/obstacleReport/image?id=1" οnlοad="FixedImage(this)"/>
</td>
</tr>
后台:
def image = {
if(params.id!=null){
Connection conn = SqlCon.getCon();
byte[] description = "";
def query ="""select photo from photo_list where id = """+params.id+""" and record_state=0 """;
def pstmt = conn.prepareStatement(query);
ResultSet result = pstmt.executeQuery();
StringBuffer myStringBuffer = new StringBuffer();
if (result.next()) {
java.sql.Blob blob = result.getBlob("photo");
InputStream inStream = blob.getBinaryStream();
long nLen = blob.length();
int nSize = (int) nLen;
description = new byte[nSize];
inStream.read(description);
inStream.close();
description = ChangeImgSize(description, 200, 200);
if(description!=null){
OutputStream op = response.getOutputStream();
op.write(description, 0, description.length);
op.close();
op = null;
}
response.flushBuffer();
}
result.close();
pstmt.close();
conn.close();
}
}
private byte[] ChangeImgSize(byte[] data, int nw, int nh){
byte[] newdata = null;
try{
BufferedImage bis = ImageIO.read(new ByteArrayInputStream(data));
if(bis!=null){
int w = bis.getWidth();
int h = bis.getHeight();
double sx = (double) nw / w;
double sy = (double) nh / h;
AffineTransform transform = new AffineTransform();
transform.setToScale(sx, sy);
//AffineTransformOp ato = new AffineTransformOp(transform, null);
//原始颜色
//BufferedImage bid = new BufferedImage(nw, nh, BufferedImage.TYPE_3BYTE_BGR);
//ato.filter(bis, bid);
//转换成byte字节
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bis, "jpeg", baos);
newdata = baos.toByteArray();
}
}catch(IOException e){
e.printStackTrace();
}
return newdata;
}