获取回收站的完整尺寸图标

3

我试图在我的应用程序中显示回收站的图标,包括空和满的状态。我尝试使用多种方法获取图标,但每次得到的尺寸都是32x32。您知道获取全尺寸图像的方法吗?


2
请注意,未经允许不能使用苹果公司的图片。如果你需要一个垃圾桶图标,请查看http://www.iconfinder.com/。 - Dave DeLong
4个回答

6

我假设您是通过NSWorkspace获取垃圾桶图标,使用IconsCore.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];

在我的电脑上,这将导致一个尺寸为512x512的NSImage。


+1,完全忘记了这一点——比硬编码路径好多了。还有kFullTrashIcon也是如此。 - NSGod

2
如果您要从以下文件创建图像,则需要注意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是默认大小。


我使用了之前的答案,但因为好的解释而加上了+1。谢谢! - AP.

1

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

这是一个128x128的图标


这是 Mac App Store 允许的内容吗? - AP.
@AP 不行。未经许可,您不能使用苹果的图像。 - Dave DeLong

-4
在谷歌图片中搜索“Mac OS 垃圾桶”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接