Objective c 获取垃圾桶的全尺寸图标

Objective c 获取垃圾桶的全尺寸图标,objective-c,cocoa,macos,icons,recycle-bin,Objective C,Cocoa,Macos,Icons,Recycle Bin,我试图在我的应用程序中显示垃圾桶的图标,包括空的和满的。我尝试了几种方法来获取图标,但每次的大小都是32x32。你知道获取全尺寸图像的方法吗?在谷歌图像上搜索“Mac OS垃圾”/System/Library/CoreServices/Dock.app/Contents/Resources/trashfull.png /System/Library/CoreServices/Dock.app/Contents/Resources/trashempty.png 如果要从以下文件创建图像,则它是12

我试图在我的应用程序中显示垃圾桶的图标,包括空的和满的。我尝试了几种方法来获取图标,但每次的大小都是32x32。你知道获取全尺寸图像的方法吗?

在谷歌图像上搜索“Mac OS垃圾”

/System/Library/CoreServices/Dock.app/Contents/Resources/trashfull.png /System/Library/CoreServices/Dock.app/Contents/Resources/trashempty.png


如果要从以下文件创建图像,则它是128x128图标

,然后意识到32px x 32px只是默认大小:


/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/TrashIcon.icns

只需将其调整为您想要的大小:

NSString *path = @"/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/TrashIcon.icns";
NSImage *image = [[[NSImage alloc] initWithContentsOfFile:path] autorelease];
[image setSize:NSMakeSize(512.0, 512.0)];
执行此操作时,
NSImage
将自动从可用的图像代表中选择适当的图像代表。例如,记录图像显示以下描述:

image == NSImage 0x102e16bc0 Size={512, 512} Reps=(

    "NSBitmapImageRep 0x102e1f650 Size={512, 512} ColorSpace=(not yet loaded)
      BPS=8 BPP=(not yet loaded) Pixels=512x512 Alpha=YES Planar=NO
  Format=(not yet loaded) CurrentBacking=nil (faulting) CGImageSource=0x102e187d0",

    "NSBitmapImageRep 0x102e24c80 Size={256, 256} ColorSpace=(not yet loaded)
     BPS=8 BPP=(not yet loaded) Pixels=256x256 Alpha=YES Planar=NO
  Format=(not yet loaded) CurrentBacking=nil (faulting) CGImageSource=0x102e187d0",

    "NSBitmapImageRep 0x102e25540 Size={128, 128} ColorSpace=(not yet loaded)
    BPS=8 BPP=(not yet loaded) Pixels=128x128 Alpha=YES Planar=NO
  Format=(not yet loaded) CurrentBacking=nil (faulting) CGImageSource=0x102e187d0",

    "NSBitmapImageRep 0x102e25e30 Size={32, 32} ColorSpace=(not yet loaded)
    BPS=8 BPP=(not yet loaded) Pixels=32x32 Alpha=YES Planar=NO 
  Format=(not yet loaded) CurrentBacking=nil (faulting) CGImageSource=0x102e187d0",

    "NSBitmapImageRep 0x102e26720 Size={16, 16} ColorSpace=(not yet loaded)
    BPS=8 BPP=(not yet loaded) Pixels=16x16 Alpha=YES Planar=NO
  Format=(not yet loaded) CurrentBacking=nil (faulting) CGImageSource=0x102e187d0"
)

大多数表示文件图标的图像(例如,
NSWorkspace
返回的图像)都有多种可用大小,但默认大小为32 x 32。

我假设您是通过NSWorkspace,使用iconcore.h中的
kTrashIcon
常量获取垃圾图标的(如果您没有,这是:

NSImage* image = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kTrashIcon)];
…此NSImage包含许多不同大小的表示形式。如果您想要最大的表示形式,只需遍历可用的表示形式即可找到它:

NSEnumerator* representationEnumerator = [[image representations] objectEnumerator];
NSSize biggestSize = NSMakeSize(0, 0);
NSSize size;
while ((size = [(NSImageRep*)[representationEnumerator nextObject] size]).width) {
    if (size.width > biggestSize.width) {
        biggestSize = size;
    }
}
[image setSize:biggestSize];

…在我的电脑上,这会导致NSImage设置为512x512。

这是Mac App Store允许的吗?@AP No.你不能未经许可使用苹果的图像。仅供参考,你不能未经许可使用苹果的图像。如果你需要一个垃圾图标,签出+1,忘记所有比硬编码路径好得多的东西。还有
kFullTrashIcon
也是。我使用了前面的答案,但是+1做了很好的解释。谢谢!