2017-04-01 1 views
0

png 이미지의 모든 픽셀 중 마지막 4 비트가 0으로 변경되었습니다. 왜 이미지의 크기가 절반 이하로 줄어 들었습니까? 나는 PNG가 무손실 압축이라고 믿는다. 임베디드 데이터를 검색 할 수 있습니까 (여기에 모든 픽셀에 0000을 추가했으나 실제로 다른 데이터를 추가해야합니다). 2015 년 VB를 사용하고 있습니다. 사용 된 코드는 아래에 첨부되어 있습니다. 비트 맵 = 새 비트 맵png 파일의 크기가 줄어 듭니다.

어둡게 image1에 ("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") 
+0

"포함 된 데이터를 가져올 수 있습니까?"왜 우리에게 요청해야합니까? 왜 너 혼자서 해보지 않았 니? – jmcilhinney

+0

내 대답 외에도 : 압축 알고리즘을 반복 할 수있는 데이터가 많을수록 원래 데이터를 더 많이 제거 할 수 있습니다. 그리고 제거하는 데이터가 많을수록 압축 파일의 크기가 작아집니다. –

+0

예를 들어, 완전히 임의의 데이터를 포함하는 파일이있는 경우 반복 할 것이 없기 때문에 압축 할 수 없을 것입니다 (전혀없는 경우). 패턴이 없습니다. –

답변

0

PNG 예, 무손실 이미지 압축 포맷이다. 그러나 무손실이거나 그렇지 않은 경우에는 크기가 크게 줄어든 것과 관련이 없습니다. 이것이 영향을 미치는 것은 압축 알고리즘의 작동 방식입니다.

PNG의 알고리즘 작동 방식을 모르지만 기본적으로 압축은 데이터 반복에 관한 것입니다. 예를 들어 모든 바이트의 마지막 4 비트는 다음처럼 0000 인 경우

1000 0000 
0000 0000 
1101 0000 
0110 0000 

.. 그 다음 압축 알고리즘은 예를 들어로 표현할 수있다 :

repeat 0000 every 4 bits 

또는 :

1000 4-0 
4-0 4-0 
1101 4-0 
0110 4-0 

(4-0 indicates that it should write four '0' bits) 

압축 파일에서 몇 바이트 만 차지하는 반면 압축되지 않은 파일에서는이 네 비트가 모든 바이트의 절반을 차지합니다.

따라서 1KB = 1024 바이트의 색 데이터가 있고 위의 첫 번째 예와 같이 압축하면 파일 크기가 대략 512 바이트 + 반복을 나타내는 몇 바이트로 축소됩니다.

관련 문제