Prawdopodobnie najlepiej jest użyć do tego biblioteki obrazów Pythona, co niestety jest osobnym pobieraniem.
Najłatwiejszym sposobem na zrobienie tego, co chcesz, jest użycie metody load () w obiekcie Image, która zwraca obiekt dostępu do pikseli, którym możesz manipulować jak tablicą:
from PIL import Image
im = Image.open('dead_parrot.jpg') # Can be many different formats.
pix = im.load()
print im.size # Get the width and hight of the image for iterating over
print pix[x,y] # Get the RGBA Value of the a pixel of an image
pix[x,y] = value # Set the RGBA Value of the image (tuple)
im.save('alive_parrot.png') # Save the modified pixels as .png
Alternatywnie, spójrz na ImageDraw, który zapewnia znacznie bogatsze API do tworzenia obrazów.
pip
co było dość łatwe.easy_install --find-links http://www.pythonware.com/products/pil/ Imaging
pip install pillow
zainstaluje PIL pomyślnie i dość szybko (może być konieczne,sudo
jeśli nie w virtualenv).Używając Pillow (który działa z Pythonem 3.X oraz Pythonem 2.7+), możesz wykonać następujące czynności:
Teraz masz wszystkie wartości pikseli. Jeśli jest to RGB lub inny tryb, można go odczytać
im.mode
. Następnie możesz uzyskać piksel(x, y)
przez:Alternatywnie możesz użyć Numpy i zmienić kształt tablicy:
Kompletne, proste w użyciu rozwiązanie to
Smoke testuje kod
Możesz nie mieć pewności co do kolejności szerokości / wysokości / kanału. Z tego powodu stworzyłem ten gradient:
Obraz ma szerokość 100 pikseli i wysokość 26 pikseli. Ma gradient kolorów od
#ffaa00
(żółtego) do#ffffff
(białego). Wynik to:Kwestie, na które należy zwrócić uwagę:
image[0]
, Stąd pierwszy rząd ma 26 trójek samego koloruźródło
PyPNG - lekki dekoder / koder PNG
Chociaż pytanie wskazuje na JPG, mam nadzieję, że moja odpowiedź będzie przydatna dla niektórych osób.
Oto jak czytać i zapisywać piksele PNG za pomocą modułu PyPNG :
PyPNG to pojedynczy, czysty moduł Pythona o długości poniżej 4000 linii, zawierający testy i komentarze.
PIL to obszerniejsza biblioteka obrazowania, ale jest też znacznie cięższa.
źródło
Jak powiedział Dave Webb:
źródło
źródło
Manipulacja obraz jest złożony temat, i to najlepiej jeśli nie korzystać z biblioteki. Mogę polecić gdmodule, który zapewnia łatwy dostęp do wielu różnych formatów graficznych z poziomu Pythona.
źródło
Na wiki.wxpython.org jest naprawdę dobry artykuł zatytułowany Praca z obrazami . Artykuł wspomina o możliwości korzystania z wxWidgets (wxImage), PIL czy PythonMagick. Osobiście użyłem PIL i wxWidgets i oba sprawiają, że manipulowanie obrazami jest dość łatwe.
źródło
Możesz użyć modułu surfarray w pygame . Ten moduł ma metodę zwracania tablicy pikseli 3D o nazwie pixels3d (surface). Poniżej pokazałem użycie:
Mam nadzieję, że był pomocny. Ostatnie słowo: ekran jest zablokowany na całe życie screenpix.
źródło
zainstaluj PIL za pomocą polecenia „sudo apt-get install python-imaging” i uruchom następujący program. Wyświetli wartości RGB obrazu. Jeśli obraz jest duży, przekieruj dane wyjściowe do pliku za pomocą '>', później otwórz plik, aby zobaczyć wartości RGB
źródło
Możesz użyć modułu Tkinter, który jest standardowym interfejsem Pythona do zestawu narzędzi Tk GUI i nie potrzebujesz dodatkowego pobierania. Zobacz https://docs.python.org/2/library/tkinter.html .
(W przypadku Pythona 3 nazwa Tkinter została zmieniona na tkinter)
Oto jak ustawić wartości RGB:
I zdobądź RGB:
źródło
źródło
źródło
Jeśli chcesz mieć trzy cyfry w postaci kodu koloru RGB, poniższy kod powinien to zrobić.
To może działać dla Ciebie.
źródło