RubyCocoa:在NSTableView的缩略图图像
-
19-09-2019 - |
题
我想要显示的一个NSTableView:
|缩略图|文件名|
我创建的NSTableView的在IB和它委托给一个类。在课堂上,我绕过一个模型只是为了获得一个POC实施和创建数据源委托方法。他们填充文本的单元格就好了。然而,现在我在所述第一小区需要包含图像的小缩略图的步骤。
我想要做的(我敢肯定,这是愚蠢的,简单)就是抓住图像图标 - 它是公平的假设,所有文件和JPEG文件的缩略图有内嵌 - 并把该图标,缩放为64×64到表格单元格。有大量的代码如何生成缩略图,但我没有看到太多,让我对工作的代码。下面是我有:
# 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方法为我提供的东西,可以是一个适当的数据对象从数据源返回。
任何帮助惊人地理解。
BTW:IknowIknowIknow,我应该使用的MacRuby但它并不在我的32位酷睿运行。不幸的是
解决方案
我绕过一个模型...
不要那样做。在可可,很容易做的事情有比没有的典范。
我正在拼杀是什么缺少的步骤是得到thumbnailImage方法为我提供的东西,可以是一个适当的数据对象从数据源返回。
CGImageSourceCreateThumbnailAtIndex
返回一个CGImage。您需要tableView_objectValueForTableColumn_row_
返回一个NSImage中。因此,使用NSImage中的initWithCGImage_size_
方法。
如果您正在运行Leopard,该方法不可用,所以你需要创建一个NSBitmapImageRep与CGImage代替,然后创建正确大小的NSImage中,并且表示添加到它。
不隶属于 StackOverflow