nsimage imageNamed : Mac Mini의 경우 고해상도 대신 작은 아이콘을 반환합니다.
-
06-07-2019 - |
문제
사용할 때 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 파일을 작성할 수 있습니다.