2012. 4. 4. 13:47ㆍ개발관련기록/Servlet_JSP
파일 이미지를 다루는 방식은 인터넷에 많은데 접기 접기 접기 접기 접기 접기 <img src="/ShowImage.do?imgIdx=007 " />
이번에 Byte[]로 받아 처리하는 방식에 대해 정리 차원에서 기록해보자.
ibatis에서 BLOB 타입을 받아 처리하려면 설정해주어야 할 문제가 있다.
(자세한 사항은 http://wiki.dev.daewoobrenic.co.kr/mediawiki/index.php/Ibatisclobblob ,
http://blog.naver.com/PostView.nhn?blogId=mispro97&logNo=20053634922
참고)
1. applicationContext.xml 소스 추가1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
이렇게 applicationContext.xml 파일에 추가해주어야 ibatis에서 BLOB 타입을 처리해준다고 한다.
(역시, 위의 링크와 동일하게 자세한 사항은 http://wiki.dev.daewoobrenic.co.kr/mediawiki/index.php/Ibatisclobblob ,
http://www.java2s.com/Code/Java/Spring/SetupDataSourceforMySQL.htm 참고)
2. 이미지를 byte[]로 받아 출력해 보자1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
@RequestMapping("/ShowImage")
public void showImage( @RequestParam("imgIdx") String imgIdx
,HttpServletResponse response
,HttpServletRequest request) throws Exception {
InputStream is = null;
byte[] bytes;
String content_type = "image/jpeg";
response.setContentType(content_type);
Master master = new Master();
master = MasterMgr.getMasterImg(imgIdx);
bytes = master.getBlobTypeImage();
is = new ByteArrayInputStream(bytes);
ServletOutputStream os = response.getOutputStream();
int binaryRead;
while ((binaryRead = is.read()) != -1) {
os.write(binaryRead);
}
}
3. 이미지를 Resize해서 출력해 보자
( 출처 : http://blog.naver.com/PostView.nhn?blogId=ppant&logNo=70107766793 )1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
@RequestMapping("/ShowImage")
public void showImage( @RequestParam("imgIdx") String imgIdx
,HttpServletResponse response
,HttpServletRequest request) throws Exception {
InputStream is = null;
byte[] bytes;
String content_type = "image/jpeg";
response.setContentType(content_type);
Master master = new Master();
master = MasterMgr.getMasterImg(imgIdx);
bytes = master.getBlobTypeImage();
is = new ByteArrayInputStream(generateImage(bytes, 100, 1));
ServletOutputStream os = response.getOutputStream();
int binaryRead;
while ((binaryRead = is.read()) != -1) {
os.write(binaryRead);
}
}
public static byte[] generateImage( byte[] imageContent
,int maxWidth
,double xyRatio) throws IOException {
BufferedImage originalImg = ImageIO.read( new ByteArrayInputStream(imageContent));
int[] centerPoint = { originalImg.getWidth() /2, originalImg.getHeight() / 2 };
int cropWidth=originalImg.getWidth();
int cropHeight=originalImg.getHeight();
if( cropHeight > cropWidth * xyRatio ) {
cropHeight = (int) (cropWidth * xyRatio);
} else {
cropWidth = (int) ( (float) cropHeight / xyRatio) ;
}
int targetWidth = cropWidth;
int targetHeight = cropHeight;
if( targetWidth > maxWidth) {
targetWidth = maxWidth;
targetHeight = (int) (targetWidth * xyRatio);
}
BufferedImage targetImage = new BufferedImage( targetWidth
,targetHeight
,BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = targetImage.createGraphics();
graphics2D.setBackground(Color.WHITE);
graphics2D.setPaint(Color.WHITE);
graphics2D.fillRect(0, 0, targetWidth, targetHeight);
graphics2D.setRenderingHint( RenderingHints.KEY_INTERPOLATION
,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage( originalImg, 0, 0
,targetWidth, targetHeight
,centerPoint[0] - (int)(cropWidth /2)
,centerPoint[1] - (int)(cropHeight /2)
,centerPoint[0] + (int)(cropWidth /2)
,centerPoint[1] + (int)(cropHeight /2)
,null);
ByteArrayOutputStream output = new ByteArrayOutputStream();
ImageIO.write(targetImage, "png", output);
return output.toByteArray();
}
4. 화면 출력
이제 화면에 이미지가 보이나요? ㅋㅋㅋ
'개발관련기록 > Servlet_JSP' 카테고리의 다른 글
이클립스 + 톰캣 + 스프링 MVC + maven 개발환경 구축 - 1장 (0) | 2012.06.07 |
---|---|
Java 설치 및 환경설정 관련 (0) | 2012.06.05 |
[JSP]Spring Web (0) | 2012.04.04 |
[Download] 한글 Putty 다운로드 (0) | 2011.11.30 |
[MySQL]Alter 구문 관련 쿼리 예제 (0) | 2011.08.09 |