자바 사진 압축 데모
package com.wangxuegang.image;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
/**
*
* @description Demo
* @author wangxuegang
* @since JDK 1.6
*/
public class ImageZipTest {
/**
*
*/
private static final Integer PHOTO_SIZE = 102400;
/**
*
* @description
* @param bt
* @param scale
* @param flag :true ; false
* @throws IOException
* @since JDK 1.6
*/
public static void pic(byte[] bt,Integer scale,boolean flag) throws IOException{
System.out.println(" :"+scale);
InputStream is = new ByteArrayInputStream(bt);
//
BufferedImage oldImage = ImageIO.read(is);
//
BufferedImage newImage = picCompress(oldImage, scale, flag);
//
ByteArrayOutputStream bs = new ByteArrayOutputStream();
//
ImageOutputStream imOut = ImageIO.createImageOutputStream(bs);
ImageIO.write(newImage, "jpg", imOut);
//
InputStream contentStream = new ByteArrayInputStream(bs.toByteArray());
System.out.println(" :"+contentStream.available());
System.out.println(" ::"+PHOTO_SIZE);
//
while(contentStream.available() > PHOTO_SIZE){
scale +=1;
// ,
pic(bs.toByteArray(), scale, flag);
ImageIO.write(newImage, "JPEG", new File("C:\\Users\\wangxuegang\\Desktop\\ _01.jpg"));
contentStream.close();
bs.close();
is.close();
break;
}
}
/**
*
* @description
* @param image
* @param scale
* @param flag :true ; false
* @since JDK 1.6
*/
private static BufferedImage picCompress(BufferedImage image,Integer scale,boolean flag) {
//
int width = image.getWidth();
int height = image.getHeight();
if(flag) {//
width = width * scale;
height = height * scale;
} else {//
width = width / scale;
height = height / scale;
}
System.out.println("width:"+width);
System.out.println("height:"+height);
Image img = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
BufferedImage outputImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics graphics = outputImage.getGraphics();
graphics.drawImage(img, 0, 0, null);
graphics.dispose();
return outputImage;
}
/**
*
* @description Main
* @since JDK 1.6
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
InputStream is = new FileInputStream(new File("C:\\ .jpg"));
ByteArrayOutputStream bo = new ByteArrayOutputStream();
byte[] bt = new byte[1024];
int len = 0;
while((len = is.read(bt))>0){
bo.write(bt,0,len);
}
bo.close();
is.close();
pic(bo.toByteArray(),5,false);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.