자바 는 Thumbnails 를 사용 하여 큰 그림 을 압축 합 니 다.
7829 단어 자바그림 압축Thumbnails
최근 프로젝트 개발 에 서 는 사진 업로드 에 자주 사용 되 지만 너무 큰 그림 은 볼 때 열 리 는 속도 에 영향 을 주 고 데이터 낭비 와 서버 저장 공간 을 낭비 하기 때문에 백 엔 드 에서 사진 을 처리 하고 업로드 해 야 합 니 다.여 기 는 Thumbnails 이미지 처리 도구 류 를 사 용 했 습 니 다.
Thumbnails 는 주로 다음 과 같은 기능 을 지원 합 니 다.
1.크기 를 지정 하여 크기 조정
2,비율 에 따라 크기 조정
3.비례 하지 않 고 크기 를 지정 하여 크기 조정
4.회전
5.워 터 마크
6.재단
7.그림 형식 전환
8、OutputStream 으로 출력
9、BufferedImage 로 출력
사용 절차:
1.Maven 추가
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
2.구체 적 인 조작1:크기 조정 할 크기 지정
/**
*
*
* @throws IOException
*/
private void test1() throws IOException {
/*
* size(width,height) 200 , 300 ,
* 200 , 300 , 300, 200 , 300 , 200,
* 200 , 300 , , 200 300
*/
Thumbnails.of("images/test.jpg").size(200, 300).toFile("C:/image_200x300.jpg");
Thumbnails.of("images/test.jpg").size(2560, 2048).toFile("C:/image_2560x2048.jpg");
}
2:비율 에 따라 크기 조정
/**
*
* scale 0-1 ,1f ,0.5 * outputQuality 0-1 , 1 , 0
* @throws IOException
*/
private void test2() throws IOException {
/**
* scale( )
*/
Thumbnails.of("images/test.jpg").scale(0.25f).outputQuality(0.8f).toFile("C:/image_25%.jpg");
Thumbnails.of("images/test.jpg").scale(0.75f).outputQuality(0.8f).toFile("C:/image_110%.jpg"); }
3:비례 하지 않 고 크기 를 지정 하여 크기 조정
/**
* ,
*
* @throws IOException
*/
private void test3() throws IOException {
/**
* keepAspectRatio(false)
*/
Thumbnails.of("images/test.jpg").size(120, 120).keepAspectRatio(false).toFile("C:/image_120x120.jpg"); }
4:회전
/**
*
*
* @throws IOException
*/
private void test4() throws IOException {
/**
* rotate( ), : :
*/
Thumbnails.of("images/test.jpg").size(1280, 1024).rotate(90).toFile("C:/image+90.jpg");
Thumbnails.of("images/test.jpg").size(1280, 1024).rotate(-90).toFile("C:/iamge-90.jpg");
}
5:워 터 마크
/**
*
*
* @throws IOException
*/
private void test5() throws IOException {
/**
* watermark( , , )
*/
Thumbnails.of("images/test.jpg").size(1280, 1024).watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("images/watermark.png")), 0.5f)
.outputQuality(0.8f).toFile("C:/image_watermark_bottom_right.jpg");
Thumbnails.of("images/test.jpg").size(1280, 1024).watermark(Positions.CENTER, ImageIO.read(new File("images/watermark.png")), 0.5f)
.outputQuality(0.8f).toFile("C:/image_watermark_center.jpg");
}
6:재단
/**
*
*
* @throws IOException
*/
private void test6() throws IOException {
/**
* 400*400
*/
Thumbnails.of("images/test.jpg").sourceRegion(Positions.CENTER, 400, 400).size(200, 200).keepAspectRatio(false)
.toFile("C:/image_region_center.jpg");
/**
* 400*400
*/
Thumbnails.of("images/test.jpg").sourceRegion(Positions.BOTTOM_RIGHT, 400, 400).size(200, 200).keepAspectRatio(false)
.toFile("C:/image_region_bootom_right.jpg");
/**
*
*/
Thumbnails.of("images/test.jpg").sourceRegion(600, 500, 400, 400).size(200, 200).keepAspectRatio(false).toFile("C:/image_region_coord.jpg");
}
7:그림 형식 전환
/**
*
*
* @throws IOException
*/
private void test7() throws IOException {
/**
* outputFormat( )
*/
Thumbnails.of("images/test.jpg").size(1280, 1024).outputFormat("png").toFile("C:/image_1280x1024.png");
Thumbnails.of("images/test.jpg").size(1280, 1024).outputFormat("gif").toFile("C:/image_1280x1024.gif");
}
8:출력 스 트림 으로 출력
/**
* OutputStream
*
* @throws IOException
*/
private void test8() throws IOException {
/**
* toOutputStream( )
*/
OutputStream os = new FileOutputStream("C:/image_1280x1024_OutputStream.png");
Thumbnails.of("images/test.jpg").size(1280, 1024).toOutputStream(os);
}
9:BufferedImage 로 출력
/**
* BufferedImage
*
* @throws IOException
*/
private void test9() throws IOException {
/**
* asBufferedImage() BufferedImage
*/
BufferedImage thumbnail = Thumbnails.of("images/test.jpg").size(1280, 1024).asBufferedImage();
ImageIO.write(thumbnail, "jpg", new File("C:/image_1280x1024_BufferedImage.jpg"));
}
3.그림 파일 에 대한 Base 64 작업
/**
* Base64
*
* @throws IOException
*/
public String Base64ImageByMemory(BufferedImage pic) {
String imgString = "";
ByteArrayOutputStream newBaos = new ByteArrayOutputStream();//io
try {
ImageIO.write(pic, "jpg", newBaos);//
byte[] bytes = newBaos.toByteArray();//
imgString = URLEncoder.encode(new BASE64Encoder().encode(bytes), "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return imgString;
}
4.서버 이미지 파일 크기 가 져 오기
/**
* OutputStream
*
* @throws IOException
*/
public void getImageFileSize(){
int size;
URLConnection conn;
try {
String path="";
path="https://bkimg.cdn.bcebos.com/pic/a8773912b31bb051c36044e93b7adab44bede0af";//
//path="http://10.30.23.217:9017/image/0c09ca36-abea-4efa-85b0-99b6d261f66c"; //
URL url = new URL(path);
conn = url.openConnection();
size = conn.getContentLength();
if (size < 0){
System.out.println("Could not determine file size.");
}else{
System.out.println("The size of file is = " + size + " bytes");
BigDecimal filesize = new BigDecimal(size);
BigDecimal megabyte = new BigDecimal(1024 * 1024);
float returnValue = filesize.divide(megabyte, 2, BigDecimal.ROUND_UP).floatValue();
System.out.println("The size of file is = "+returnValue+"M");
}
conn.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
이로써 그림 압축 에 관 한 처리 와 Base 64,서버 파일 크기 를 가 져 오 는 기능 이 끝 났 습 니 다!
이상 은 자바 가 Thumbnails 를 사용 하여 큰 그림 압축 에 대한 상세 한 내용 입 니 다.자바 큰 그림 압축 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.