【问题标题】:Extracting bitmap data from an NSImage in python从python中的NSImage中提取位图数据
【发布时间】:2011-02-23 01:37:45
【问题描述】:

我正在使用来自 NSImage 的数据构建 wx.MemoryDC,但生成的代码非常缓慢。在我看来,TIFFRepresentation -> ImageFromStream 步骤是减慢速度的步骤。有什么办法可以避免这一步(所有这些流式传输),并直接从 NSImage 数据初始化 MemoryDC 吗?下面是示例代码:

import wx
import cStringIO
from AppKit import NSImage

app = wx.PySimpleApp()
frame = wx.Frame(None, wx.ID_ANY, "Python")
static_bitmap = wx.StaticBitmap(frame,wx.NewId(), bitmap=wx.EmptyBitmap(640, 480))
frame.Show(True)


# wget http://upload.wikimedia.org/wikipedia/commons/d/d9/Test.png
ns_image = NSImage.alloc().initWithContentsOfFile_("Test.png")

for i in range(100):

    tiffdata = ns_image.TIFFRepresentation()

    image = wx.ImageFromStream(cStringIO.StringIO(tiffdata), wx.BITMAP_TYPE_TIF)

    bitmap = image.ConvertToBitmap()

    bmdc = wx.MemoryDC(bitmap)

    # bmdc.DrawCircle(10,10, 5)
    del bmdc
    static_bitmap.SetBitmap(bitmap)


app.MainLoop()

【问题讨论】:

  • 问题是关于“从 NSImage 中提取数据” - 根据标题!剩下的代码只是为了有一个完整/有效的例子。

标签: python wxpython nsimage appkit


【解决方案1】:

尝试使用:

bitmap = wx.BitmapFromBuffer(...)

而不是ImageFromStream

【讨论】:

    【解决方案2】:

    回答我自己的问题:与 NSIimage 的接口本来就很慢,唯一可行的解​​决方案是完全避免它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 2019-10-08
      • 2021-02-12
      • 1970-01-01
      • 2021-03-18
      相关资源
      最近更新 更多