Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 解码JPEG图像时,BitmapFactory.decodeFile()文件是否解压缩JPEG图像?_Android_Jpeg - Fatal编程技术网

Android 解码JPEG图像时,BitmapFactory.decodeFile()文件是否解压缩JPEG图像?

Android 解码JPEG图像时,BitmapFactory.decodeFile()文件是否解压缩JPEG图像?,android,jpeg,Android,Jpeg,JPEG是一种压缩格式。 在内存中将JPEG图像解码为位图时,BitmapFactory.decodeFile(“JPEG文件的路径”)是否解压缩JPEG图像? 当我对解码的JPEG文件生成的位图使用Bitmap.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream)时,压缩图像的大小大于原始图像的大小。有人能确切地解释这种现象吗 在内存中将JPEG图像解码为位图时,BitmapFactory.decodeFile(“JPEG

JPEG是一种压缩格式。 在内存中将JPEG图像解码为位图时,BitmapFactory.decodeFile(“JPEG文件的路径”)是否解压缩JPEG图像? 当我对解码的JPEG文件生成的位图使用
Bitmap.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream)
时,压缩图像的大小大于原始图像的大小。有人能确切地解释这种现象吗

在内存中将JPEG图像解码为位图时,BitmapFactory.decodeFile(“JPEG文件的路径”)是否解压缩JPEG图像

当我对解码的JPEG文件生成的位图使用Bitmap.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream)时,压缩图像的大小大于原始图像的大小

这是很有可能的。在质量等级为100的情况下,我认为这是有可能的,虽然可能没有把握。

有人能确切地解释这种现象吗

JPEG不要求它们是相同的。事实上,如果它们是相同的,那几乎是随机的

假设我们从内存中的图像开始(Boriginal,其中B是位图的缩写)。然后我们将该图像压缩为JPEG(Joriginal)。JPEG采用有损压缩算法,通过考虑人眼无法识别少量变化的事实,在真实图像(例如照片)上实现更好的压缩

假设我们随后将Joriginal解码回内存中的位图(Breloaded)。Breloaded将与Boriginal不同,因为JPEG压缩将改变图像。Breloaded与Boriginal的接近程度取决于多种因素,部分与图像本身有关,部分与保存JPEG时使用的质量级别有关(代码中的
100
)。此质量级别的范围从0到100,100表示最高质量

如果我们随后将Breloaded压缩为第二个JPEG(Jreloaded),则新的JPEG将与原始JPEG(Joriginal)不同。部分原因是,根据上一段,源位图已更改。部分原因是,我们可能不会选择与原始压缩工作相同的质量级别

在您的情况下,您没有创建Joriginal。您不一定知道使用了什么质量级别(该信息可能存储在JPEG头中;我忘记了)。但是因为Breloaded与原始位图(无论它来自何处)不同,所以当您将位图压缩到Jreloaded时,它将与Joriginal不同。总的来说,它是大还是小很难说是抽象的。但是,由于您选择的质量级别为100,并且Joriginal可能已经用较低的质量级别进行了压缩,因此您的压缩图像很容易变大

这与Android无关。这纯粹是JPEG工作方式的函数。如果您对JPEG本身有进一步的疑问,您可能希望在一些与图像格式有关的网站上访问和提问

在内存中将JPEG图像解码为位图时,BitmapFactory.decodeFile(“JPEG文件的路径”)是否解压缩JPEG图像

当我对解码的JPEG文件生成的位图使用Bitmap.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream)时,压缩图像的大小大于原始图像的大小

这是很有可能的。在质量等级为100的情况下,我认为这是有可能的,虽然可能没有把握。

有人能确切地解释这种现象吗

JPEG不要求它们是相同的。事实上,如果它们是相同的,那几乎是随机的

假设我们从内存中的图像开始(Boriginal,其中B是位图的缩写)。然后我们将该图像压缩为JPEG(Joriginal)。JPEG采用有损压缩算法,通过考虑人眼无法识别少量变化的事实,在真实图像(例如照片)上实现更好的压缩

假设我们随后将Joriginal解码回内存中的位图(Breloaded)。Breloaded将与Boriginal不同,因为JPEG压缩将改变图像。Breloaded与Boriginal的接近程度取决于多种因素,部分与图像本身有关,部分与保存JPEG时使用的质量级别有关(代码中的
100
)。此质量级别的范围从0到100,100表示最高质量

如果我们随后将Breloaded压缩为第二个JPEG(Jreloaded),则新的JPEG将与原始JPEG(Joriginal)不同。部分原因是,根据上一段,源位图已更改。部分原因是,我们可能不会选择与原始压缩工作相同的质量级别

在您的情况下,您没有创建Joriginal。您不一定知道使用了什么质量级别(该信息可能存储在JPEG头中;我忘记了)。但是因为Breloaded与原始位图(无论它来自何处)不同,所以当您将位图压缩到Jreloaded时,它将与Joriginal不同。总的来说,它是大还是小很难说是抽象的。但是,由于您选择的质量级别为100,并且Joriginal可能已经用较低的质量级别进行了压缩,因此您的压缩图像很容易变大

这与Android无关。这纯粹是JPEG工作方式的函数。如果您对JPEG本身有进一步的疑问,您可能希望在一些与图像格式有关的网站上访问和提问