2015-02-02 3 views
1

osx에서 스크린 샷 (낮은 수준의 품질)을 프로그래밍 방식으로 가져 오는 방법이 있습니까? I이 기능을 runned 언제 150킬로바이트 및 600킬로바이트 이미지 사이 걸렸다품질이 낮은 스크린 샷을 찍는 방법

CGImageRef resizeImage(CGImageRef imageRef) { 
    CGRect thumRect; 
    CGPoint point; 
    point.x = 0; 
    point.y = 0; 
    thumRect.origin = point; 
    thumRect.size.height = 225; 
    thumRect.size.width = 360; 

    CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef); 

    if (aplhaInfo == kCGImageAlphaNone) 
     alphaInfo = kCGImageAlphaNoneSkipLast; 

    CGContextRef bitmap = CGBitmapContextCreate(NULL, thumRect.size.width, thumRect.size.height, CGImageGetBitsPerComponent(imageRef), 4 * thumRect.size.width, CGImageGetColorSpace(imageRef), alphaInfo); 

    CGContextDrawImage(bitmap, thumRect, imageRef); 
    imageRef = CGBitmapContextCreateImage(bitmap); 
    CGContextRelease(bitmap); 

return imageRef; 
} 

:

는 I 함수 아래와 같이 개발 하였다. thumRect 크기를 줄이면 이미지의 모든 문자를 읽을 수 없습니다. 그러나 나는이 이미지들을 가능한 한 낮게하고 싶다. 어떤 제안이나 다른 가능한 해결책이 있습니까?

감사합니다.

답변

0

다음과 같은 해결책을 찾았습니다. 먼저, 내 질문에 코드로 이미지의 크기를 조정하십시오.

나서 압축 :)

//imageRef is CGImageRef 
NSImage * image = [[NSImage alloc] initWithCGImage:imageRef size:NSZeroSize]; 
NSBitmapImageRep *bmpImageRep = [NSBitmapImageRep imageRepWithData [image TIFFRepresentation]]; 

CGFloat compressionFactor = 1.0 //Read it : (1) 
NSDictionary *jpgProperties = [NSDictionary dictionaryWithObjectsAndKeys: 
          [NSNumber numberWithDouble:compressionFactor], NSImageCompressionFactor, [NSNumber numberWithBool:NO], NSImageProgressive, nil]; 

NSData *jpgData = [bmpImageRep representationUsingType:NSJPEGFileType properties:jpgProperties]; 

(1) https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSBitmapImageRep_Class/index.html#//apple_ref/doc/constant_group/Bitmap_image_properties

관련 문제