nsimage imageNamed : Mac Mini의 경우 고해상도 대신 작은 아이콘을 반환합니다.

StackOverflow https://stackoverflow.com/questions/1628824

문제

사용할 때 NSImage'에스 imageNamed: 메소드 현재 컴퓨터의 아이콘을 가져 오는 방법, Mac Mini에서 실행중인 경우 저해상도 이미지를 얻습니다. MacBook에서 동일한 코드를 실행하면 예상 한 것과 같은 고해상도 아이콘을 얻습니다.

내 코드는 다음과 같습니다.

NSImage *image;
image = [NSImage imageNamed:@"NSComputer"];
[image setSize: NSMakeSize(512,512)];
NSData  * tiffData = [image TIFFRepresentation];
NSBitmapImageRep *bitmap = [NSBitmapImageRep imageRepWithData:tiffData];
data = [bitmap representationUsingType:NSPNGFileType properties:nil];
mime = @"image/png";

MacBook에서 실행하면 모든 것이 잘 작동하며 컴퓨터의 512x512 아이콘을 얻습니다. Mac Mini에서 실행하면 512x512로 업 스케일링 된 32x32 아이콘을 얻습니다.

고해상도 버전을 얻을 수있는 방법에 대한 아이디어가 있습니까?

도움이 되었습니까?

해결책

나는 그 이미지가 나왔다고 믿는다 /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/

Mac Mini 아이콘이 명명되었습니다 com.apple.macmini.icns. 해당 파일이 컴퓨터에 512x512 아이콘이 포함되어 있는지 확인하고 싶을 수도 있습니다 (광산에있어, 스노우 레오파드 실행) '

디버깅 목적으로 출력도 보내야합니다. -representations 에게 NSLog 아이콘이 512x512 버전을 사용하거나 가지고 있지 않은지 확인합니다.

편집하다:

그만큼 10.6 AppKit 릴리스 노트 NSIMAGE와 CGIMAGE 간의 업데이트 된 관계에 대해 상당히 많이 있습니다.

Snow Leopard에서는 cgimageref로 변환하여 전체 해상도 이미지를 얻을 수 있습니다.

NSImage* image = [NSImage imageNamed:NSImageNameComputer];
NSRect imageRect = NSMakeRect(0, 0, 512, 512);
CGImageRef cgImage = [image CGImageForProposedRect:&imageRect context:nil hints:nil];

거기에서 cgimageref에서 새 nsimage를 만들거나 cgimageStination* API를 사용하여 PNG 파일을 작성할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top