RubyCocoa:NSTableView中的缩略图
我正在尝试显示以下内容的NSTableView: |缩略图|文件名| 我在IB中创建了NSTableView并将其委托给一个类。在这个类中,我绕过了一个模型,只是为了得到一个POC实现,并创建了数据源委托方法。它们可以很好地填充文本单元格。然而,现在我正处于第一个单元格需要包含图像的小缩略图的步骤 我想做的(我相信这很简单)是抓取图像图标——可以公平地假设所有文件都是JPEG格式并且嵌入了缩略图——然后将该图标(缩放到64x64)放入表格单元格中。有很多关于如何生成缩略图的代码,但我看不到多少可以让我工作的代码。以下是我所拥有的:RubyCocoa:NSTableView中的缩略图,cocoa,image,nstableview,thumbnails,Cocoa,Image,Nstableview,Thumbnails,我正在尝试显示以下内容的NSTableView: |缩略图|文件名| 我在IB中创建了NSTableView并将其委托给一个类。在这个类中,我绕过了一个模型,只是为了得到一个POC实现,并创建了数据源委托方法。它们可以很好地填充文本单元格。然而,现在我正处于第一个单元格需要包含图像的小缩略图的步骤 我想做的(我相信这很简单)是抓取图像图标——可以公平地假设所有文件都是JPEG格式并且嵌入了缩略图——然后将该图标(缩放到64x64)放入表格单元格中。有很多关于如何生成缩略图的代码,但我看不到多少可
# This works if I am only populating text values in the when 'Image'
def tableView_objectValueForTableColumn_row_(image_table, column, row)
thumbnailImage(75)
case column.headerCell.stringValue
when 'File Name'
(0..99).to_a[row].to_s
when 'Image'
# here's where I want to return a square 64x64 image or ImageCell
thumbnailImage(64)
else
'???'
end
end
# Creates square thumbnail
def thumbnailImage(size)
file = "file://localhost/Users/sxross/Downloads/iStock_000004561564XSmall.jpg"
image = CGImageSourceCreateWithURL(CFURLCreateWithString(nil, file, nil), nil)
thumb = CGImageSourceCreateThumbnailAtIndex(image, 0, nil)
thumb
end
def numberOfRowsInTableView(view)
100
end
我正在努力解决的是缺少的步骤是如何让thumbnailImage方法为我提供一些可以从数据源返回的适当数据对象
非常感谢您的帮助
顺便说一句:我知道,我应该使用MacRuby,但它不能在我的32位核心双核上运行。可悲的是
我绕过了一个模型
不要那样做。在Cocoa中,使用模型比不使用模型更容易
我正在努力解决的是缺少的步骤是如何让thumbnailImage方法为我提供一些可以从数据源返回的适当数据对象
cgimagesourceCreateTumbnailatindex
返回CGImage。您需要tableView\u objectValueForTableColumn\u row\u
来返回NSImage。因此,使用NSImage的initWithCGImage\u size\u方法
如果您运行的是Leopard,则该方法不可用,因此您需要使用CGImage创建一个NSBitmapImageRep,然后创建一个正确大小的NSImage并将该表示添加到其中