压缩图像而不保存它——在Java中
在Java中,有没有一种方法可以在保存图像的情况下计算压缩图像的大小?(这将用于确定将图像压缩到特定大小所需的质量。)压缩图像而不保存它——在Java中,java,image-compression,Java,Image Compression,在Java中,有没有一种方法可以在保存图像的情况下计算压缩图像的大小?(这将用于确定将图像压缩到特定大小所需的质量。) ,但在Java而不是C#中,流可能是一条死胡同。这里是一个简单的实现 public class LengthCounterOutputStream extends OutputStream{ private int byteCounter = 0; @Override public void write(int b){ byteCou
,但在Java而不是C#中,流可能是一条死胡同。这里是一个简单的实现
public class LengthCounterOutputStream extends OutputStream{
private int byteCounter = 0;
@Override
public void write(int b){
byteCounter++;
}
@Override
public void write(@NotNull byte[] b){
this.write(b, 0, b.length);
}
@Override
public void write(@NotNull byte[] b, int off, int len){
byteCounter += len;
}
public int getByteCounter(){
return byteCounter;
}
}
Java的
MemoryStream
等效于ByteArrayOutputStream
。一旦你压缩了图像,你就可以得到以字节为单位的大小并丢弃流。@反斜杠:我担心答案是写我自己的,但有没有一个流我可以使用,它甚至不会将数据保存在内存中,但仍然允许我确定大小?@ScottHunter AFAIK没有默认方法。但是您可以扩展InputStream,只需计算长度,而不是存储字节。应该是painless@MatthewKerian:你是说OutputStream,对吗?@ScottHunter是的,我的错