2014-09-02 2 views
0

В моем приложении я отправляю снимок экрана рабочего стола на веб-службу, преобразовывая его в строку base64. Вот код для получения снимка экрана.Как преобразовать CGImageRef в base64 строку

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

Теперь я хочу, чтобы преобразовать этот скриншот в base64 string format. Может ли кто-нибудь предоставить решение для преобразования моего снимка экрана в формат base64.

Примечание: преобразование из NSImage/NSData в base64 формат строки также приемлемо.

+0

Я не знаю, что это достаточно, чтобы обеспечить полный ответ, но после быстрого заглянете в документы я могу ткнуть вас в направлении 'CGImageGetDataProvider() 'и' CGImageGetBitmapInfo() ', которые могут дать вам то, что вам нужно для начала. Для NSImage у вас может быть более легкое время, если вам нужен определенный формат файла, используя NS (Bitmap) ImageRep. – andlabs

+0

@andlabs Я хочу проверить эту ссылку, чтобы изменить формат файла. – santhosh

ответ

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] ; 
} 
Смежные вопросы