DouyinGifDownload - 抖音gif表情包下载到相册(heif格式转gif)
/ 4 min read
目录
下载
功能介绍
抖音 GIF 表情包下载工具,支持格式转换。
核心功能
- 长按 GIF 表情包保存到相册
- 自动将 HEIF 格式转换为 GIF
- 保持动画效果和画质
- 支持评论区和聊天界面的表情包
格式转换
使用教程
步骤
- 编译并注入抖音 App
- 在评论区或聊天界面长按 GIF 表情包
- 选择”保存到相册”
- 插件自动转换格式并保存
格式对比
| 格式 | 动画支持 | 文件大小 | 兼容性 | 相册显示 |
|---|---|---|---|---|
| HEIF | ✅ | 较小 | iOS | ❌ |
| GIF | ✅ | 较大 | 通用 | ✅ |
环境要求
| 项目 | 要求 |
|---|---|
| iOS 版本 | 14.0+ |
| 编译环境 | Theos |
| 注入工具 | TrollStore/TrollTools |
| 依赖框架 | ImageIO.framework |
| 抖音版本 | 建议最新版本 |
核心代码实现
Hook GIF 表情包长按事件
%hook AWEEmojiView
- (void)longPressGesture:(UILongPressGestureRecognizer *)gesture { if (gesture.state == UIGestureRecognizerStateBegan) { // 获取表情包 URL NSString *emojiURL = self.model.url; // 下载并转换 [self downloadAndConvertToGIF:emojiURL]; }}
%new- (void)downloadAndConvertToGIF:(NSString *)url { // 下载 HEIF 文件 NSData *heifData = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
// 转换为 GIF NSData *gifData = [self convertHEIFToGIF:heifData];
// 保存到相册 [self saveGIFToAlbum:gifData];}HEIF 转 GIF 核心算法
%new- (NSData *)convertHEIFToGIF:(NSData *)heifData { // 使用 ImageIO 框架转换 CGImageSourceRef source = CGImageSourceCreateWithData( (__bridge CFDataRef)heifData, NULL );
NSMutableData *gifData = [NSMutableData data]; CGImageDestinationRef destination = CGImageDestinationCreateWithData( (__bridge CFMutableDataRef)gifData, kUTTypeGIF, CGImageSourceGetCount(source), NULL );
// 设置 GIF 属性(循环播放) NSDictionary *gifProperties = @{ (__bridge NSString *)kCGImagePropertyGIFDictionary: @{ (__bridge NSString *)kCGImagePropertyGIFLoopCount: @0 } }; CGImageDestinationSetProperties( destination, (__bridge CFDictionaryRef)gifProperties );
// 复制所有帧 NSUInteger frameCount = CGImageSourceGetCount(source); for (NSUInteger i = 0; i < frameCount; i++) { CGImageDestinationAddImageFromSource(destination, source, i, NULL); }
CGImageDestinationFinalize(destination); CFRelease(destination); CFRelease(source);
return gifData;}
%end技术说明
HEIF vs GIF
HEIF (High Efficiency Image Format)
- Apple 推出的高效图像格式
- 文件体积小,画质好
- iOS 原生支持,但相册无法显示动画
GIF (Graphics Interchange Format)
- 通用的动画图像格式
- 兼容性好,所有平台支持
- 相册可以正常显示动画效果
转换流程
- 从 CDN 下载 HEIF 格式表情包
- 使用 ImageIO 框架解析 HEIF 数据
- 提取所有动画帧
- 重新编码为 GIF 格式
- 保存到系统相册
作者: @cookieodd | Telegram