我正在使用
我遇到的问题是,当我在电子邮件合成器或iMessage中打开保存的GIF时,它会正常播放动画。但是当我通过Twitter分享它时,它不会动画。我尝试通过iPhone上的Twitter应用程序进行共享,并看到一个有趣的事情(如下屏幕截图),使用Safari从不同网站下载的GIF显示了一个标签“ GIF”,而我的保存的GIF则没有。这里可能出了什么问题?请问有人可以指导我吗?
以下是创建GIF文件的代码:
NSArray
的UIImage
创建动画GIF文件,并将其保存在iPhone的NSDocumentDirectory
以及照片相册中。我遇到的问题是,当我在电子邮件合成器或iMessage中打开保存的GIF时,它会正常播放动画。但是当我通过Twitter分享它时,它不会动画。我尝试通过iPhone上的Twitter应用程序进行共享,并看到一个有趣的事情(如下屏幕截图),使用Safari从不同网站下载的GIF显示了一个标签“ GIF”,而我的保存的GIF则没有。这里可能出了什么问题?请问有人可以指导我吗?
以下是创建GIF文件的代码:
float delay = 1.0/15.0; // 15 FPS
NSDictionary *prep = @{
(__bridge id)kCGImagePropertyGIFDictionary: @{
(__bridge id)kCGImagePropertyGIFDelayTime: @(delay)
}
};
// static NSUInteger kFrameCount = 16;
NSDictionary *fileProperties = @{
(__bridge id)kCGImagePropertyGIFDictionary: @{
(__bridge id)kCGImagePropertyGIFLoopCount: @0 // 0 means loop forever
}
};
CFURLRef url = (__bridge CFURLRef)[NSURL fileURLWithPath:path];
CGImageDestinationRef dst = CGImageDestinationCreateWithURL(url, kUTTypeGIF, [images count], nil);
CGImageDestinationSetProperties(dst, (__bridge CFDictionaryRef)fileProperties);
for (int i=0;i<[images count];i++)
{
//load anImage from array
UIImage * anImage = [images objectAtIndex:i];
CGImageDestinationAddImage(dst, anImage.CGImage,(__bridge CFDictionaryRef)prep);
}
bool fileSave = CGImageDestinationFinalize(dst);
CFRelease(dst);
if(fileSave) {
NSLog(@"animated GIF file created at %@", path);
}else{
NSLog(@"error: no animated GIF file created at %@", path);
}
将GIF保存到相册以及NSDocumentDirectory。要保存到iPhone的相册中,这里是代码:
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
NSData *data = [NSData dataWithContentsOfFile:tempPath];
[library writeImageDataToSavedPhotosAlbum:data metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {
if (error) {
NSLog(@"Error Saving GIF to Photo Album: %@", error);
} else {
// TODO: success handling
NSLog(@"GIF Saved to %@", assetURL);
success(tempPath);
}
}];
HJImagesToGIF是个很好的帮助,还有这份代码片段!
更新:
通过分析两个 GIF 的图像头: 1- 图像头:GIF89a - 通过 Safari 下载,Twitter 应用中显示 GIF 标签 2- 图像头:GIF87a - 通过代码创建,Twitter 应用中不显示 GIF 标签
所以,图像头怎么改呢?