정규 표현식은 잘못된 것 같다 : 전혀 도움이된다면 :
open(I, "$name") || die;
binmode(I);
$_ = <I>;
close(I);
my ($j, $p) = m|^.{32}(.*)(\211PNG.*)$|s;
open(J, ">$name.jpg") &&
do { binmode(J); print J $j; close J; };
open(P, ">$name.png") &&
do { binmode(P); print P $p; close P; };
내가 CD를 암초에 걸렸다 현재 테스트 파일의 16 진 덤프는 여기에있다.
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 1048576
char stuff[MAX_SIZE];
int main (int argc, char **argv)
{
unsigned int j_off, j_len, p_off, p_len;
FILE *fp, *jp, *pp;
fp = fopen (argv[1], "r");
if (!fp) goto error;
if (fseek (fp, 12, SEEK_SET)) goto error;
if (!fread (&j_off, 4, 1, fp)) goto error;
if (!fread (&j_len, 4, 1, fp)) goto error;
if (!fread (&p_off, 4, 1, fp)) goto error;
if (!fread (&p_len, 4, 1, fp)) goto error;
fprintf (stderr, "INFO %s \t%d %d %d %d\n",
argv[1], j_off, j_len, p_off, p_len);
if (j_len > MAX_SIZE || p_len > MAX_SIZE) {
fprintf (stderr, "%s: Chunk size too big!\n", argv[1]);
return EXIT_FAILURE;
}
jp = fopen (argv[2], "w");
if (!jp) goto error;
if (fseek (fp, j_off, SEEK_SET)) goto error;
if (!fread (stuff, j_len, 1, fp)) goto error;
if (!fwrite (stuff, j_len, 1, jp)) goto error;
fclose (jp);
pp = fopen (argv[3], "w");
if (!pp) goto error;
if (fseek (fp, p_off, SEEK_SET)) goto error;
if (!fread (stuff, p_len, 1, fp)) goto error;
if (!fwrite (stuff, p_len, 1, pp)) goto error;
fclose (pp);
fclose (fp);
return EXIT_SUCCESS;
error:
perror (argv[1]);
return EXIT_FAILURE;
}
그것은 input.hpi output.jpg output.png 명령 줄 매개 변수와 함께 작동 : 나는 나를 위해 그것을 할 수있는 작은 C 프로그램을 작성하는 이유입니다. 오류 처리가 100 % 정확하지는 않지만, 잘못된 것이 있거나 대부분 그것이 무엇인지 항상 알려주는 것이 좋습니다. 대용량 파일의 경우 MAX_SIZE를 확대해야합니다.
#!/bin/bash
dest=<destination-folder>
for arg in "[email protected]"
do
base=`echo $arg | cut -d'.' -f1`
<executable> $arg $dest/original/$base.jpg $dest/mask/$base.png 2>>$dest/log
#composite -compose CopyOpacity $dest/mask/$base.png $dest/original/$base.jpg $dest/rgba/$base.png
done
옵션 복합 명령 (ImageMagick를 함께 제공)을 알파 채널로 적용 마스크를 가진 새 PNG 이미지를 만들 것입니다 : 여기
는 *의 .hpi으로 호출 할 수있는 쉘 스크립트입니다. 이 파일은 원본 파일보다 약 5 배 커야합니다.
일부 HPI 파일은 마스크없이 제공됩니다. 이 경우, 내 프로그램은 여전히 작동하지만 빈 PNG 파일을 제공합니다.
을 통해이 가능한 일부 데비안 시스템에서
위대한 작품! 나는 큰 위로 향하는 사람들이 나에게 위로 쳐다 보면서 50,000 개의 이미지로 2001 년으로 돌아갈 때까지 기다릴 수 없다. – Owen
여분의 거리를 가야하는 와우 –
나는 150,000 개가 넘는 이미지로 가득 찬 3 개의 데이터 DVD에 사용했습니다. – ypnos