2014-09-02 53 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] ; 
} 
相關問題