2009-10-27 7 views
3

NSImageimageNamed: 메서드를 사용하면 현재 컴퓨터의 아이콘을 가져올 수 있습니다. Mac Mini에서 실행 중이면 저해상도 이미지가 나타납니다. . 내 MacBook에서 동일한 코드를 실행하면 기대했던 것보다 고해상도 아이콘이 표시됩니다. 다음과 같이NSImage imageNamed : Mac Mini는 고해상도 대신 작은 아이콘을 반환합니다.

내 코드는 다음과 같습니다 내 맥북에 그것을 실행하면 모든 것이 잘 작동하고 나는 내 컴퓨터의 512 × 512 아이콘을 얻을

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"; 

. Mac Mini에서 실행하면 32x32 크기의 아이콘이 512x512로 업 스케일됩니다.

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

답변

3

나는 /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/

맥 미니 아이콘이 com.apple.macmini.icns라는 이름에서 해당 이미지를 제공 믿습니다. 해당 파일에 컴퓨터에서 512x512 아이콘이 포함되어 있는지 확인하고 싶을 수도 있습니다. (스노우 레오파드를 실행하고 있습니다.) '

디버깅을 위해 출력이 NSLog으로 보내야합니다. 또는 512x512 버전이 아닙니다.

편집 :

10.6 AppKit Release Notes이 꽤 NSImage와의 CGImage의 업데이트 된 관계에있다.

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

여기에서, 당신은 CGImageRef에서 새 NSImage를 만들 수 있습니다, 또는를 작성 *의 API를 CGImageDestination를 사용

스노우 레오파드 (Snow Leopard)에

, 당신은 CGImageRef로 변환하여 전체 해상도 이미지를 얻을 수 있습니다 png 파일.

+1

이 접근법에 대한 불행한 점은 프로그래머가 아이콘 파일의 경로와 이름을 하드 코딩해야한다는 것입니다. –

+3

@Dave DeLong, 나는 그가 "NSComputer"라는 이미지가 디렉토리에서 시스템에 의해 가져와 졌다는 것을 의미한다고 믿습니다. 그리고 그가 여기에서 언급 했으므로 실제 파일에 어떤 담당자가 있는지 직접 확인할 수 있습니다. 코드에 전체 경로를 넣어야하는 것은 아닙니다. – epatel

+0

더 단서 : 그것은에 표시를하지, 1 (작동) 맥북은 표범을 실행하고, 내가 NSComputer 아이콘을 표시하는 NSImageView을 사용하는 경우 (가 생겼습니다) 미니는 눈 표범 2를 실행 전체 입술, 그래서 파일이 시스템에 있습니다 - 난 그냥 전체 해상도에서 NSImage 개체를 얻을 수없는 것 같습니다 3. [NSImage imageNamed :]를 만들 때 그것은 단지 하나의 표현을 가지고 있으며 크기가 있습니다 of 32 –