我正在尝试使用2个宝石来做到这一点:win32-clipboard
和clipboard
,但我做不到。
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
问题解决了,谢谢!