콘텐츠에 영향을 주지 않고 파일의 바이트 크기를 늘리는 방법은 무엇입니까?

콘텐츠에 영향을 주지 않고 파일의 바이트 크기를 늘리는 방법은 무엇입니까?

내용을 손상시키지 않고 파일의 바이트 크기를 쉽고 임의로 늘릴 수 있는 방법이 있습니까? 예를 들어, 더미 바이트를 삽입합니다. 내 사용 사례의 파일은 png 유형입니다.

저는 OS X를 사용하고 있지만 모든 솔루션을 환영합니다.

답변1

귀하의 질문에 대한 문자 그대로의 대답은 정의상 '아니요'입니다. 파일의 크기는 내용의 길이입니다. 크기를 변경하려면 내용을 변경해야 합니다.

다만, 내용을 변경하여 취득하는 것은 가능할 수 있습니다.동등한 내용그건 크기가 달라요. 이것이 가능한지 여부는 파일 형식과 동등하다고 생각하는 항목에 따라 다릅니다.

예를 들어 파일이 PNG 이미지이고 PNG 이미지가 포함된 두 파일이 동일하다고 간주하는 경우(표시된 이미지가 동일하면) 파일에 설명 필드를 추가(또는 길이 연장)하여 파일을 더 크게 만들 수 있습니다. 예를 들어이미지매직:

convert old.png -comment 'This comment will be added to the image file, making it larger' new.png

최대 휴대용 댓글 크기는 다음과 같습니다.2GB(최대 4GB까지 가능합니다.) 원칙적으로 여러 개의 주석을 달거나 다른 필드 이름을 사용할 수 있지만 일반 프로그램이 이것을 잘 지원하는지 모르겠습니다.

PNG 이미지의 예를 계속하면, 많은 프로그램에서는 유효한 PNG 이미지와 추가 콘텐츠가 포함된 파일을 마치 이 추가 콘텐츠가 없는 PNG 이미지인 것처럼 허용합니다. 후행 쓰레기를 추가하면 많은 프로그램이 여전히 이미지를 허용합니다.

cp old.png new.png
echo 'trailing garbage' >>new.png

당신은 할 수 있습니다truncate명령 을 사용하십시오널 바이트를 쉽게 추가하여 특정 크기에 도달합니다. 결과 파일은 널리 허용되지만 기술적으로는 유효하지 않으므로 모든 곳에서 허용되지 않을 수 있습니다. (이것은 다음을 사용하는 모든 프로그램에서 작동하는 것 같습니다.libpng또는 파생물이며 이 라이브러리는 널리 퍼져 있으므로 파일이 작동할 가능성이 높습니다.)

답변2

truncate명령에는 null 바이트를 추가하여 파일 크기를 늘리는 잘 알려지지 않은 옵션이 있습니다. 이는 vim.

올바른 구문이 설명되어 있습니다.매뉴얼 페이지에서이지만 일반적으로 -s옵션을 전달하고 파일 크기를 지정하거나 -s 10k'+'를 추가하여 -s +10k파일에 많은 null 바이트를 추가합니다.

추가된 바이트는 끝에 삽입됩니다. 사용 사례의 경우 정상적으로 볼 때 이러한 Null은 이미지에 표시되지 않습니다.

답변3

목적에 따라 만들 수 있습니다.스파스 파일. 예를 들어...

dd of=sparse bs=5M seek=1 count=0

이렇게 하면 크기가 5MB로 보이지만 디스크 공간을 차지하지 않는 파일이 생성됩니다. 읽을 때 "추가 공간"은 null로 나타납니다.

를 사용하여 기존 파일을 희소하게 만들 수 있습니다 truncate -s. 예를 들어, 이 애니메이션 GIF의 크기는 5MB로 표시되지만 디스크에서는 102KB만 차지하도록 만들었습니다.

$ ls -l pikachu-nyan.gif 
-rw-r--r-- 1 schwern staff 100872 Oct 29  2019 pikachu-nyan.gif

$ truncate -s 5M pikachu-nyan.gif 

$ ls -l pikachu-nyan.gif 
-rw-r--r-- 1 schwern staff 5242880 Jan  9 14:32 pikachu-nyan.gif

파일의 Finder 정보에 따르면...5,242,880 bytes (102 KB on disk)

이것이 유효한지 여부는 파일을 사용하는 방법에 따라 다릅니다. 위의 예에서 애니메이션 GIF는 Firefox에서 계속 작동합니다.

관련 정보