短い質問:
HQ2x が破損した PNG を生成する理由を知っている人、または私が試すことができる透過性をサポートする別の実装を知っている人はいますか?
より長い質問:
HQ2x (アルファ サポート付き)を使用してアップスケールされた画像を生成しようとしています。
ただし、問題は、次のコードが破損した PNG を生成することです。
UIImage *image = [UIImage imageNamed:@"testIcon.png"];
NSMutableData *data = [NSMutableData dataWithData:UIImagePNGRepresentation(image)];
uint32_t *imageData = (uint32_t *) malloc([data length]);
uint32_t *newImageData = (uint32_t *) malloc(image.size.width * 4 * image.size.height * 4 * sizeof(uint32_t));
[data getBytes:imageData];
hqxInit();
hq2x_32(imageData, newImageData, image.size.width, image.size.height);
FILE *file;
file = fopen("/Users/iPhone/Desktop/out.png","w");
fwrite(newImageData, image.size.width * 4 * image.size.height * 4 * sizeof(uint32_t), 1, file);
fclose(file);
出力の最初の数バイトを調べると、2 つのPNG マジック ナンバー( 89 50 4e 47 0d 0a 1a 0a
)が混在しているため、何か問題が発生していると推測できます。
89 50 4E 47 89 50 4E 47 0D 0A 1A 0A 0D 0A 1A 0A
入力画像は壊れていません。
これは客観的な c プログラムですが、重要な部分は純粋な c に含まれています。