Código de compactação de imagem Java
Copie o código do código da seguinte forma:
pacote com.img;
importar java.awt.Image;
importar java.awt.image.BufferedImage;
importar java.io.File;
importar java.io.FileOutputStream;
importar java.io.IOException;
importar javax.imageio.ImageIO;
importar com.sun.image.codec.jpeg.JPEGCodec;
importar com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
*
* @author Coca com açúcar
*/
classe pública CompressPicDemo {
arquivo privado arquivo = null; // objeto de arquivo
private String inputDir; //Caminho do mapa de entrada
private String outputDir; // Caminho do gráfico de saída
private String inputFileName; //Inserir nome do arquivo de imagem
private String outputFileName; // Nome do arquivo de imagem de saída
private int outputWidth = 100; //Largura padrão da imagem de saída
private int outputHeight = 100; //Altura padrão da imagem de saída
private boolean propor = true; // Se a marca deve ser dimensionada proporcionalmente (o padrão é o dimensionamento proporcional)
public CompressPicDemo() { //Inicializa variáveis
inputDir = "";
saídaDir = "";
inputNomeArquivo = "";
nomeArquivosaída = "";
largura de saída = 100;
altura de saída = 100;
}
public void setInputDir(String inputDir) {
this.inputDir = inputDir;
}
public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
public void setInputFileName(String nomeArquivodeentrada) {
this.inputFileName = inputFileName;
}
public void setOutputFileName(String nomeArquivoSaída) {
this.outputFileName = outputFileName;
}
public void setOutputWidth(int larguraWidth) {
this.outputWidth = largura de saída;
}
public void setOutputHeight(int saídaHeight) {
this.outputHeight = saídaHeight;
}
public void setWidthAndHeight(int largura, int altura) {
this.outputWidth = largura;
this.outputHeight = altura;
}
/*
* Obtenha o tamanho da imagem
* Passar no parâmetro String path: caminho da imagem
*/
público longo getPicSize(Caminho da string) {
arquivo = novo arquivo(caminho);
retornar arquivo.length();
}
//Processamento de imagem
public String compressPic() {
tentar {
//Obtém o arquivo fonte
arquivo = novo arquivo(inputDir + inputFileName);
if (!file.exists()) {
retornar "";
}
Imagem img = ImageIO.read(arquivo);
// Determina se o formato da imagem está correto
if (img.getWidth(nulo) == -1) {
System.out.println("não consigo ler,tente novamente!" + "<BR>");
retorne "não";
} outro {
int novaLargura; int novaAltura;
// Determina se é uma escala proporcional
if (this.proporção == verdadeiro) {
// Calcula a largura e a altura da imagem de saída para dimensionamento proporcional
taxa dupla1 = ((duplo) img.getWidth(null)) / (duplo) outputWidth + 0,1;
taxa dupla2 = ((duplo) img.getHeight(null)) / (duplo) outputHeight + 0,1;
// Executa o controle de zoom com base na maior taxa de zoom
taxa dupla = taxa1 > taxa2 ? taxa1 : taxa2;
novaLargura = (int) (((duplo) img.getWidth(null)) / taxa);
newHeight = (int) (((duplo) img.getHeight(null)) / taxa);
} outro {
newWidth = img.getWidth(null); // Largura da imagem de saída
newHeight = img.getHeight(null); // Altura da imagem de saída
}
Tag BufferedImage = novo BufferedImage((int) newWidth, (int) newHeight, BufferedImage.TYPE_INT_RGB);
/*
* Algoritmo de miniatura Image.SCALE_SMOOTH gera suavidade de imagens em miniatura
* A prioridade é maior que a velocidade. A qualidade das imagens geradas é melhor, mas a velocidade é lenta.
*/
tag.getGraphics().drawImage(img.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH), 0, 0, null);
FileOutputStream out = new FileOutputStream(outputDir + outputFileName);
// JPEGImageEncoder pode ser aplicado à conversão de outros tipos de imagens
Codificador JPEGImageEncoder = JPEGCodec.createJPEGEncoder(out);
codificador.encode(tag);
out.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
retorne "ok";
}
public String compressPic (String inputDir, String outputDir, String inputFileName, String outputFileName) {
//Inserir caminho da imagem
this.inputDir = inputDir;
//Caminho do gráfico de saída
this.outputDir = outputDir;
//Digite o nome do arquivo de imagem
this.inputFileName = inputFileName;
//Nome do arquivo de imagem de saída
this.outputFileName = outputFileName;
return compressPic();
}
public String compressPic(String inputDir, String outputDir, String inputFileName, String outputFileName, int width, int height, boolean gp) {
//Inserir caminho da imagem
this.inputDir = inputDir;
//Caminho do gráfico de saída
this.outputDir = outputDir;
//Digite o nome do arquivo de imagem
this.inputFileName = inputFileName;
//Nome do arquivo de imagem de saída
this.outputFileName = outputFileName;
//Define o comprimento e largura da imagem
setWidthAndHeight(largura,altura);
// Se é uma marca de escala proporcional
esta.proporção = gp;
return compressPic();
}
//teste principal
// compressPic (caminho de imagem grande, gerar caminho de imagem pequeno, nome de arquivo de imagem grande, gerar nome de texto de imagem pequeno, gerar largura de imagem pequena, gerar altura de imagem pequena, se deve ser dimensionado proporcionalmente (o padrão é verdadeiro))
public static void main(String[] arg) {
CompressPicDemo mypic = new CompressPicDemo();
System.out.println("Tamanho da imagem de entrada: " + mypic.getPicSize("e://1.jpg")/1024 + "KB");
mypic.compressPic("e://", "e://teste//", "1.jpg", "r1.jpg", 120, 120, falso);
}
}