Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RubyCocoa:NSTableView中的缩略图_Cocoa_Image_Nstableview_Thumbnails - Fatal编程技术网

RubyCocoa:NSTableView中的缩略图

RubyCocoa:NSTableView中的缩略图,cocoa,image,nstableview,thumbnails,Cocoa,Image,Nstableview,Thumbnails,我正在尝试显示以下内容的NSTableView: |缩略图|文件名| 我在IB中创建了NSTableView并将其委托给一个类。在这个类中,我绕过了一个模型,只是为了得到一个POC实现,并创建了数据源委托方法。它们可以很好地填充文本单元格。然而,现在我正处于第一个单元格需要包含图像的小缩略图的步骤 我想做的(我相信这很简单)是抓取图像图标——可以公平地假设所有文件都是JPEG格式并且嵌入了缩略图——然后将该图标(缩放到64x64)放入表格单元格中。有很多关于如何生成缩略图的代码,但我看不到多少可

我正在尝试显示以下内容的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并将该表示添加到其中