Вам нужно передать параметр в GetClipboardData
, указав формат данных, которые вы ищете. Вы можете использовать EnumClipboardFormats
для просмотра доступных форматов - когда я что-то копирую в Проводнике, мне доступно 15 форматов.
Редактировать 2: Вот код для получения имени файла после того, как вы скопировали файл в Проводнике. Ответ будет совершенно другим, если вы скопировали изображение из программы, например из браузера.
import win32clipboard
win32clipboard.OpenClipboard()
filename_format = win32clipboard.RegisterClipboardFormat('FileName')
if win32clipboard.IsClipboardFormatAvailable(filename_format):
input_filename = win32clipboard.GetClipboardData(filename_format)
win32clipboard.CloseClipboard()
Редактировать 3: Из комментариев ясно, что у вас есть настоящее изображение в буфере обмена, а не имя файла изображения. Вы заявили, что не можете использовать PIL, поэтому:
import win32clipboard
win32clipboard.OpenClipboard()
if win32clipboard.IsClipboardFormatAvailable(win32clipboard.CF_DIB):
data = win32clipboard.GetClipboardData(win32clipboard.CF_DIB)
win32clipboard.CloseClipboard()
На данный момент у вас есть строка (в Python 2) или байты (в Python 3), которые содержат данные изображения. Единственный формат, который вы сможете сохранить, это .BMP, и вам нужно будет декодировать BITMAPINFOHEADER , чтобы получить параметры для BITMAPFILEHEADER , который необходимо записать на передний план файла.