如何解决从尺寸和位深度计算jpeg大小
我有以下详细信息的jpeg文件 ExampleJPEG File
文件大小为1342字节,如上所示,并且已由Hex Editor确认。
我当时想我也可以通过使用文件的尺寸和位深度来计算文件的大小。 即总字节数=(宽度X高度X bitDepth)/ 8
(28 X 28 X 24)/ 8 = 2352字节
为什么有这种区别?计算公式为2352字节,而实际大小为1342字节。我想念什么?
解决方法
扩展(解码)并作为字节保留在内存(RAM)中时,该图像实际上将占据2,352字节。但是JPEGs被压缩以节省磁盘,相机SD卡以及通过电子邮件发送和传输时的空间,因此它们更小且占用的空间/带宽更少。
如果要查看扩展后的RGB格式的像素强度,可以在终端/命令行中使用诸如 ImageMagick 之类的工具。让我们制作一个28x28的红色图片-现在,我将其制作为PNG格式:
magick -size 28x28 xc:red PNG24:image.png
现在,如果您要查看像素,则可以使用 ImageMagick 将图像转换为文本转储,如下所示:
magick image.png -depth 8 -colorspace rgb txt:
示例输出
# ImageMagick pixel enumeration: 28,28,65535,rgb
0,0: (255,0) #FF0000 rgb(255,0)
1,0)
2,0)
3,0)
...
...
24,27: (255,0)
25,0)
26,0)
27,0)
或者,如果您想以更原始的十六进制形式查看它们:
convert image.png -depth 8 rgb:image.raw
并在十六进制编辑器中查看image.raw
,或使用Linux内置工具:
convert image.png -depth 8 rgb: | xxd -g 3 -c12 | more
00000000: ff0000 ff0000 ff0000 ff0000 ............
0000000c: ff0000 ff0000 ff0000 ff0000 ............
00000018: ff0000 ff0000 ff0000 ff0000 ............
请注意,如果您检查原始,未压缩(解码)的图像的大小,则会发现它很高兴地与您计算的2,352字节相匹配:
ls -l image.raw
-rw-r--r-- 1 mark staff 2352 27 Aug 09:56 image.raw
请注意,我上面使用的是PNG而不是JPEG,因为JPEG有损,并且您没有取回保存的内容,您得到的东西看起来很相似,但是占用的空间更少-如我上面所说。
这里是一个例子。我将在黑色背景上绘制一条红线和一条绿线,并另存为PNG并计算颜色:
magick -size 100x100 xc:black +antialias -fill red -draw "line 5,5 95" -fill lime -draw "line 95,5 5,95" image.png
现在计算颜色:
magick -format %k image.png info:
3
现在,他与有损JPEG完全一样:
magick -size 100x100 xc:black +antialias -fill red -draw "line 5,5 95,95" image.jpg
计算JPEG中的颜色,现在有148种:
magick -format %k image.jpg info:
148
关键字:图像处理,ImageMagick,JPEG,有损,PNG无损,素数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。