如何在Ruby中从剪贴板获取图像

时间:2018-12-30 11:32:56

标签: ruby windows clipboard

我正在尝试使用2个宝石来做到这一点:win32-clipboardclipboard,但我做不到。

win32-clipboard

include Win32
# I don't know what is this buffer, BM = BMP Images but the '??????' is the problem
Clipboard.data(Clipboard::DIB)[0..5000] # => BMB→O     B   (   ?♣  ?♥  ☺   ♥    →O                   ?  ??   ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ???...
Clipboard.data(Clipboard::BITMAP) #=> FFI::NullPointerError

clipboard

Clipboard.paste # => ""

我想获取图像的缓冲区,即Gosu#Image或RMagick#Image。

非常感谢!

编辑:是否可以使用C ++获取缓冲区并将其加载到Ruby中?

我做得很好,Clipboard.data(Clipboard::DIB)返回了缓冲区,但是没有BMP标头,并且我不知道如何获取图像的宽度和高度,但是我保存了图像,然后使用gosu gem(Gosu #Image):

buffer = Win32::Clipboard.data(win32::Clipboard::DIB)
File.open("image.bmp", "wb") do |file|
  file.write(buffer)
end
image = Gosu::Image.new("image.bmp")
image.width # => 450
image.height # => 450

问题解决了,谢谢!

0 个答案:

没有答案