안녕하세요, 이미지 파일을 압축하지 않고 자바에서 코드를 작성하지만 파일을 압축하는 것만 할 수 있습니다.압축하지 않고 이미지 파일의 크기를 줄이는 방법은 무엇입니까?
이것은 내 코드입니다.
package com.test.main;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Main {
public static final double byteSize = 1024;
public static final String successDir = "E://Tmp/S";
public static final String failureDir = "E://Tmp/F";
public static final String tempDir = "E://Tmp/T";
public static final String delimiter = "/";
public static final String zipExtn = ".zip";
public static final String filePath = "E://Tmp/_LND4320HR1.bmp";
public static void main(String[] args) {
double fileSizeInMB = 0.0;
File inputFile = null;
try {
inputFile = new File(filePath);
if (inputFile.exists()) {
fileSizeInMB = ((inputFile.length()/(byteSize))/(byteSize));
if (fileSizeInMB < 6) {
writeToDir(inputFile,successDir);
System.out.println("Done");
} else {
//Compress file
compressFile(inputFile);
inputFile = new File(tempDir + delimiter
+ getFileName(inputFile.getName())+ zipExtn);
if(inputFile.exists()){
fileSizeInMB = ((inputFile.length()/byteSize)/byteSize);
if (fileSizeInMB < 6) {
writeToDir(inputFile,successDir);
System.out.println("Done");
}else{
writeToDir(inputFile,failureDir);
System.out.println("Not Done");
}
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static String getFileName(String fileName) {
int indexofDot = fileName.lastIndexOf(".");
return fileName.substring(0,indexofDot);
}
public static void writeToDir(File inputFile,String dirPath) throws IOException{
byte[] buffer = new byte[1024];
FileOutputStream fos = new FileOutputStream(dirPath + delimiter
+ getFileName(inputFile.getName()) + zipExtn);
FileInputStream fis = new FileInputStream(inputFile);
int length;
while ((length = fis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
//Closing operations
fis.close();
fos.close();
}
public static void compressFile(File inputFile) throws IOException{
byte[] buffer = new byte[1024];
FileOutputStream fos = new FileOutputStream(tempDir + delimiter
+ getFileName(inputFile.getName())+ zipExtn);
ZipOutputStream zos = new ZipOutputStream(fos);
ZipEntry ze = new ZipEntry(inputFile.getName());
zos.putNextEntry(ze);
FileInputStream fis = new FileInputStream(inputFile);
int length;
while ((length = fis.read(buffer)) > 0) {
zos.write(buffer, 0, length);
}
//Closing operations
zos.closeEntry();
zos.close();
fis.close();
fos.close();
}
}
은 위의 코드는 압축이 코드를 변환하지만, 파일을 압축하지하는 방법 파일을 참아 요.
손실 압축/무손실? – Raptor
이미지 파일이 6MB 이상인 경우 압축 후 위의 코드를 변환해야합니다. 오류 폴더에 저장해야하며 6MB 미만의 파일은 성공 폴더에 저장해야하며 압축 된 파일을 열어 볼 수 있어야합니다. 파일. – user1844638
[ImageIO] (http://docs.oracle.com/javase/6/docs/api/javax/imageio/ImageIO.html)에는 이미지를 png 또는 jpg로 저장할 수있는 방법이 있습니다. – BevynQ