[마이플랫폼] Base64 문자열을 이미지 컴포넌트에 표시하기
마이플랫폼에서 Base64 이미지 문자열을 이미지 컴포넌트에 표시하고자 할 때
java 단에서 먼저 해당 컬럼을 DB에서 조회한 다음 일반적인 DRRecordSet으로 반환하면
String 데이터 컬럼으로 변환되어 이미지 컴포넌트에 표시하지 못한다.
그래서 DRRecordSet을 새로 생성하여 해당 컬럼을 BLOB로 만들어서 반환하면
이미지 컴포넌트에서 이미지를 제대로 표시할 수 있다.
DSRecordSet rs = DB에서 조회한 목록
DSRecordSet rs2 = new DSRecordSet();
rs2.addColumn("base64Image", ColumnInfo.CY_COLINFO_BLOB, -1);
for (int i = 0; i < rs.getRowCount(); i++) {
int row = rs2.appendRow();
String imageData = rs.getColumn(row, "base64Image").toString();
rs2.setColumn(row, "base64Image", Base64.decode(imageData.getBytes()));
}
생성한 rs2를 반환한다.
이후 마이플랫폼에서 원하는 이미지 컴포넌트에 표시한다.
imgPhoto.ImageID = ds.GetColumn(nRow, 'base64Image');
단, 여기서 주의할 점은 이미지 컴포넌트 imgPhoto의 ImageID 값은 항상 null 이다.
그래서 if (imgPhoto.ImageID != '')와 같은 구문은 항상 거짓이 된다.
그리고 이미지 컴포넌트의 이미지를 지우거나 초기화할 경우 빈문자열 대신 null을 이용한다. imgPhoto.ImageID = null
'기타' 카테고리의 다른 글
택배 조회 URL (0) | 2018.09.18 |
---|---|
CSS 이미지 위에 텍스트 표시 (0) | 2018.08.20 |
Web API CORS 관련 문제 해결(개발 시) (0) | 2017.12.22 |
[UbiReport] 그룹별 제목과 다단 보고서 (0) | 2016.05.11 |
Alfresco 웹스크립트를 이용한 사이트 생성 (0) | 2015.07.21 |
사진 이미지 크기 변경 후 Base64 문자열 변환
이미지 크기 조절
/** * 사진 이미지 크기 조절 * @param img * @param width * @param height * @return */ private BufferedImage resizeImage(BufferedImage img, int width, int height) { //int type = img.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : img.getType(); //png = TYPE_INT_ARGB Image tmp = img.getScaledInstance(width, height, Image.SCALE_SMOOTH); BufferedImage resized = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //jpeg = TYPE_INT_RGB Graphics2D g2d = resized.createGraphics(); g2d.drawImage(tmp, 0, 0, null); g2d.dispose(); return resized; }
사진 이미지 Base 64 문자열 변환
private String resizePhoto(String filePath, int MAX_SIZE) { try { ByteArrayOutputStream os = new ByteArrayOutputStream(); //업로드 된 이미지(원본) 파일 읽기 File file = new File(filePath); BufferedImage orgImage = ImageIO.read(file); BufferedImage resizedImage = null; int imageWidth = orgImage.getWidth(); int imageHeight = orgImage.getHeight(); //가로가 긴 이미지 if (imageWidth > imageHeight) { if (imageWidth > MAX_SIZE) { double height = (double)imageHeight / (double)imageWidth * (double)MAX_SIZE; //가로 크기 = MAX_SIZE, 세로 크기 = height resizedImage = resizeImage(orgImage, MAX_SIZE, (int)height); } //세로가 긴 이미지 } else { if (imageHeight > MAX_SIZE) { double width = (double)imageWidth / (double)imageHeight * (double)MAX_SIZE; //가로크기 = width, 세로 크기 = MAX_SIZE resizedImage = resizeImage(orgImage, (int)width, MAX_SIZE); } } //이미지 크기 변경 = resizedImage 아니면 원본 이미지 = orgImage ImageIO.write((resizedImage != null) ? resizedImage : orgImage, "jpeg", os); return Base64.getEncoder().encodeToString(os.toByteArray()); //base64 문자열 변환 } catch (FileNotFoundException ex) { System.out.println("▶▶▶ File not found in [resizePhoto] " + ex); } catch (IOException ex) { System.out.println("▶▶▶ Error in [resizePhoto] " + ex); } return null; }
'Java' 카테고리의 다른 글
날짜 관련 유틸리티 (0) | 2018.10.23 |
---|---|
JDK 8 인스톨 없이 설치하기 (0) | 2018.10.20 |
POI, Excel 셀 생성 (0) | 2015.06.30 |
POI, Excel 숫자 셀 생성 (0) | 2015.06.30 |
POI, Excel 병합 셀 생성 (0) | 2015.06.30 |
Web API CORS 관련 문제 해결(개발 시)
Angular에서 localhost Web API를 호출할 때 아래와 같은 오류가 발생할 경우
http failure response for (unknown url) 0 unknown error
You’ve run afoul of the Same Origin Policy – it says that every AJAX request must match the exact host, protocol, and port of your site. Things that might cause this:
- Hitting a server from a locally-served file (a request from
file:///YourApp/index.html
tohttp://api.awesome.com
) - Hitting an external API (a request from
http://yourapp.com
tohttp://api.awesome.com
). - Hitting an internal API (a request from
http://yourapp.com
tohttp://api.yourapp.com
). - Hitting a different port on the same host (webapp is on
http://localhost:3000
, API ishttp://localhost:4000
) - Requesting over
http
fromhttps
or vice-versa (requestinghttps://yourapp.com
fromhttp://yourapp.com
)
서버측에 CORS(Cross-Orgion Resource Sharing) Header를 추가해준다.
그 외 방법은 아래 링크를 참조한다.
https://daveceddia.com/access-control-allow-origin-cors-errors-in-angular/
I just added custom headers to the Web.config and it worked like a charm.
On configuration - system.webServer:
<httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Content-Type" /> </customHeaders> </httpProtocol>
'기타' 카테고리의 다른 글
CSS 이미지 위에 텍스트 표시 (0) | 2018.08.20 |
---|---|
[마이플랫폼] Base64 문자열을 이미지 컴포넌트에 표시하기 (0) | 2018.04.26 |
[UbiReport] 그룹별 제목과 다단 보고서 (0) | 2016.05.11 |
Alfresco 웹스크립트를 이용한 사이트 생성 (0) | 2015.07.21 |
Alfresco Share Login 페이지에서 CSRF 필터 오류 해결법 2가지 (0) | 2015.07.21 |