前回のエントリーにあげた「
PNGフォーマット/iCCPチャンクについてのサイト」に沿ってチャンクの名前を確認してみるコードをやってみた.
NSData *inData= [NSData dataWithContentsOfFile:@"/path/to/input.png"];
char *buffer= (char *)malloc(8);
NSRange range= NSMakeRange(0, 8);
[inData getBytes:buffer range:range];
range.location+= 8;
range.length= 4;
while(range.location<[inData length]) {
NSUInteger chunkIndex= range.location;
//chunk length
[inData getBytes:buffer
range:range];
range.location+= 4;
NSUInteger length= ((buffer[0] & 0xff) << 24)
| ((buffer[1] & 0xff) << 16)
| ((buffer[2] & 0xff) << 8)
| (buffer[3] & 0xff);
//chunk type
[inData getBytes:buffer
range:range];
range.location+= 4;
buffer[5]= '\0';
printf("%s", buffer);
//chunk data
range.location+= length;
//chunk check
range.location+= 4;
}
free(buffer);
前回のエントリーでGeneric RGB Profileを設定したケース
IHDR
iCCP
IDAT
IDAT
IDAT
IDAT
IDAT
IDAT
IDAT
IDAT
IDAT
IEND
前回のエントリーでnilを設定したケース
IHDR
IDAT
IDAT
IDAT
IDAT
IDAT
IDAT
IDAT
IDAT
IDAT
IEND
0 件のコメント:
コメントを投稿