【问题标题】:How to convert CGImageRef to base64 string如何将 CGImageRef 转换为 base64 字符串
【发布时间】:2014-09-02 13:47:32
【问题描述】:

在我的应用程序中,我通过将桌面屏幕截图转换为 base64 字符串将其发送到 Web 服务。下面是获取截图的代码。

CGImageRef screenShot = CGWindowListCreateImage(CGRectInfinite, kCGWindowListOptionOnScreenOnly, kCGNullWindowID, kCGWindowImageDefault); 

现在我想将此屏幕截图转换为 base64 字符串格式。谁能提供将我的屏幕截图转换为base64字符串格式的解决方案。

注意:也可以从 NSImage/NSData 转换为 base64 字符串格式。

【问题讨论】:

  • 我对这方面的了解还不够,无法提供完整的答案,但在快速浏览一下文档后,我可以将您引向 CGImageGetDataProvider()CGImageGetBitmapInfo() 的方向,这可能会给您带来什么你需要开始。对于 NSImage,如果您需要使用 NS(Bitmap)ImageRep 的特定文件格式,您可能会更轻松。
  • @andlabs 我将检查此参考以更改文件格式。

标签: cocoa base64 cgimageref


【解决方案1】:

这是我将 CGImageRef 转换为 base64 字符串的实现。

CGImageRef screenShot = CGWindowListCreateImage(CGRectInfinite, kCGWindowListOptionOnScreenOnly, kCGNullWindowID, kCGWindowImageDefault); 

NSBitmapImageRep * bitmapImageRep = [[NSBitmapImageRep alloc]initWithCGImage:screenShot];

NSImage *image = [[NSImage alloc] init];

[image addRepresentation:bitmapImageRep];

NSData *imgData = [image TIFFRepresentation];

NSString *encodedString = [self base64encde: imgData];

// 编码base64

- (NSString*)base64encde:(NSData*)input
{
    SecTransformRef transform = SecEncodeTransformCreate(kSecBase64Encoding, NULL);

    return [[NSString alloc] initWithData:base64helper(input, transform) encoding:NSASCIIStringEncoding] ;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 2022-09-25
    • 2022-11-12
    • 2016-10-21
    相关资源
    最近更新 更多