2014-09-02 35 views
0

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

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

现在我想将此截图转换为base64字符串格式。任何人都可以提供解决方案,将我的截图转换为base64字符串格式。

注意:从NSImage/NSData到base64字符串格式的转换也是可以接受的。

+0

我不知道这是否足以提供一个完整的答案,但在文档快速浏览一下之后,我可以在CGImageGetDataProvider的'方向捅你() '和'CGImageGetBitmapInfo()',这可能会给你你需要开始的东西。对于NSImage,如果您需要使用NS(Bitmap)ImageRep的特定文件格式,则可能会有更轻松的时间。 – andlabs 2014-09-03 23:11:41

+0

@andlabs我将检查此引用以更改文件格式。 – santhosh 2014-09-04 13:06:19

回答

0

这是我的实现将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] ; 
} 
相关问题