简短的问题:
有谁知道为什么 HQ2x 会生成损坏的 PNG,或者知道我可以尝试的另一种支持透明度的实现。
更长的问题:
我正在尝试使用HQ2x(支持 alpha)来生成放大图像。
然而,问题是以下代码会产生损坏的 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);
检查输出的前几个字节,我可以推断出了问题,因为有两个混合的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
输入图像未损坏。
这是一个objective-c程序,但重要的部分是纯c。