Musisz przekazać parametr do GetClipboardData
określając format danych, których szukasz. Możesz użyć formatu EnumClipboardFormats
, aby zobaczyć formaty, które są dostępne - kiedy kopiuję coś w Eksploratorze mam do dyspozycji 15 formatów.
Edytuj 2: Oto kod, aby uzyskać nazwę pliku po skopiowaniu pliku w Eksploratorze. Odpowiedź będzie zupełnie inna, jeśli skopiujesz obraz z poziomu programu, na przykład przeglądarki.
import win32clipboard
win32clipboard.OpenClipboard()
filename_format = win32clipboard.RegisterClipboardFormat('FileName')
if win32clipboard.IsClipboardFormatAvailable(filename_format):
input_filename = win32clipboard.GetClipboardData(filename_format)
win32clipboard.CloseClipboard()
Edit 3: Z uwag to jasne masz rzeczywisty obraz w schowku, a nie nazwę pliku pliku obrazu. Pan stwierdził, że nie można używać PIL, więc:
import win32clipboard
win32clipboard.OpenClipboard()
if win32clipboard.IsClipboardFormatAvailable(win32clipboard.CF_DIB):
data = win32clipboard.GetClipboardData(win32clipboard.CF_DIB)
win32clipboard.CloseClipboard()
W tym momencie masz ciąg w Pythonie (2) lub bajtów (w Pythonie 3), który zawiera dane obrazu. Jedynym formatem, który możesz zapisać, jest .BMP, a będziesz musiał zdekodować BITMAPINFOHEADER, aby uzyskać parametry dla BITMAPFILEHEADER, które należy zapisać na wierzchu pliku.
Jeśli jesteś otwarty na zastosowanie modułu wx mógłby zrobić: http://stackoverflow.com/questions/2629907/wx-read-image-from-clipboard – blcArmadillo
Próbuję napisać proste narzędzie wiersza poleceń i nie używam obecnie polecenia wx, więc wolałbym tam nie iść. – foosion