Копировать изображение в буфер обмена в Python3
прежде всего, вопрос на SO копировать изображение в буфер обмена в Python приводит к ответу запись изображения в буфер обмена Windows на python с помощью PIL и win32clipboard?, что было хорошо только для Python 2.X. - Я попробовал, но ничего не вышло. Я преодолел одну проблему:--7-->модули StringIO и cStringIO исчезли в Python 3.0:, но наткнулся на еще один:
TypeError: string argument expected, got 'bytes'
следовательно, повторите тот же вопрос снова для Python 3 -- Как скопировать изображение в буфер обмена в Python 3? Вот код, который я получил до сих пор:
from io import StringIO
import win32clipboard
from PIL import Image
def send_to_clipboard(clip_type, data):
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardData(clip_type, data)
win32clipboard.CloseClipboard()
filepath = 'image.jpg'
image = Image.open(filepath)
output = StringIO()
image.convert("RGB").save(output, "BMP")
data = output.getvalue()[14:]
output.close()
send_to_clipboard(win32clipboard.CF_DIB, data)
спасибо
1 ответов
не хочешь StringIO
здесь. Изображения являются необработанными двоичными данными, а в Py3,str
чисто для текста bytes
и bytes
-как объекты (bytearray
, прилежащей memoryview
s,mmap
s) предназначены для двоичных данных. Заменить Py2 по StringIO.StringIO
для двоичных данных вы хотите использовать io.BytesIO
в Python 3, не io.StringIO
.