【发布时间】:2017-04-01 08:01:29
【问题描述】:
我将 png 图像中所有像素的最后 4 位更改为零。为什么图像的大小减少到不到一半?我相信 png 是无损压缩。我是否能够检索嵌入的数据。(这里我向所有像素添加了 0000,但在实际情况下我需要添加不同的数据)我使用的是 vb 2015。我使用的代码附在下面。
Dim image1 As Bitmap = New Bitmap("C:\STEG\originalimage.png")
For i As Integer = 0 To image1.Height - 1
For j As Integer = 0 To image1.Width - 1
Dim value As Color = image1.GetPixel(j, i)
Dim t1 As Byte = value.R
Dim t2 As Byte = value.G
Dim t3 As Byte = value.B
t1 = t1 And 240
t2 = t2 And 240
t3 = t3 And 240
image1.SetPixel(j, i, Color.FromArgb(255, t1, t2, t3))
Next
Next
image1.Save("C:\STEG\originalimageedited.png")
【问题讨论】:
-
"我可以检索嵌入的数据吗" 为什么需要问我们这个问题?你为什么不自己尝试一下?
-
除了我的回答:压缩算法可以重复的数据越多,它可以删除的原始数据就越多。而且它删除的数据越多,压缩文件的大小就越小。
-
例如,如果您有一个包含完全随机数据的文件,您将无法对其进行太多压缩(如果有的话),因为没有什么可重复的,其中没有模式。
-
很高兴能帮上忙!请注意,我所描述的内容非常笼统。该方法因不同的压缩算法而异。我不知道PNG具体是如何工作的,但根据*,它使用DEFLATE。