сохранить изображение в clipboatd - в Python / Tkinter - PullRequest
0 голосов
/ 25 июля 2011

субъект говорит сам за себя: возможно ли взять изображение, присутствующее в буфере обмена, и сохранить его в файл под Tkinter?

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Вот скрипт, который должен получать произвольные данные буфера обмена в Windows.

import win32clipboard as clip

# The standard windows clipboard formats
formats = ['CF_OEMTEXT', 'CF_PALETTE', 'CF_TEXT', 'CF_ENHMETAFILE', 'CF_UNICODETEXT', 
            'CF_BITMAP', 'CF_METAFILEPICT', 'CF_DIB', 'CF_DIBV5']

def getFromClipboard(format):
    '""Returns a given type of data from the clipboard.'
    data = None
    clip.OpenClipboard(0)
    if clip.IsClipboardFormatAvailable(format):
        data = clip.GetClipboardData(format)
    clip.CloseClipboard()
    return data

good_formats = []
clip.OpenClipboard(0)
for format in formats:
    if clip.IsClipboardFormatAvailable(format):
        good_formats.append(format)
clip.CloseClipboard()

# choose among the good formats here
print good_formats

# use the one you picked here
data = getFromClipboard(good_formats[0])

Тогда data будут необработанными данными изображения, и вы можете просто сохранить их в файл обычным способом.

http://msdn.microsoft.com/en-us/library/ms649013%28v=VS.85%29.aspx

http://docs.activestate.com/activepython/2.4/pywin32/win32clipboard__GetClipboardData_meth.html

Предоставьте некоторую информацию, больше информации есть.

0 голосов
/ 25 июля 2011

Ну, tkinter использует PIL для большинства своих продвинутых изображений, и в этом случае эта проблема довольно проста: просто используйте Image.frombuffer(mode, size, data) с байтовым буфером, представляющим изображение, а затем сохраните его ala im.save(filename) - если вы хотите специальный формат вы также можете указать его.

Если вы хотите сделать это без PIL, я не думаю, что tkinter предлагает такую ​​функциональность из коробки, его поддержка изображений чрезвычайно ограничена сама по себе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...