Raspberry Pi – Display image on screen
Using FEH
feh is an X11 image viewer aimed mostly at console users. Unlike most other viewers, it does not have a fancy GUI, but simply displays images. It is controlled via commandline arguments and configurable key/mouse actions.
Install
sudo apt-get install -y feh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
Pakketlijsten worden ingelezen... Klaar Boom van vereisten wordt opgebouwd De statusinformatie wordt gelezen... Klaar De volgende extra pakketten zullen geïnstalleerd worden: libjpeg-progs libjpeg9 yudit-common Voorgestelde pakketten: yudit-doc yudit De volgende NIEUWE pakketten zullen geïnstalleerd worden: feh libjpeg-progs libjpeg9 yudit-common 0 opgewaardeerd, 4 nieuw geïnstalleerd, 0 te verwijderen en 172 niet opgewaardeerd. Er moeten 1959 kB aan archieven opgehaald worden. Na deze bewerking zal er 10,1 MB extra schijfruimte gebruikt worden. Ophalen:1 http://mirror.transip.net/raspbian/raspbian buster/main armhf yudit-common all 2.9.6-8 [1633 kB] Ophalen:2 http://mirror.transip.net/raspbian/raspbian buster/main armhf feh armhf 3.1.3-1 [138 kB] Ophalen:3 http://mirror.transip.net/raspbian/raspbian buster/main armhf libjpeg9 armhf 1:9b-1 [111 kB] Ophalen:4 http://mirror.transip.net/raspbian/raspbian buster/main armhf libjpeg-progs armhf 1:9b-1 [77,0 kB] 1959 kB opgehaald in 1s (2116 kB/s) Voorheen niet geselecteerd pakket yudit-common wordt geselecteerd. (Database wordt ingelezen ... 154021 bestanden en mappen momenteel geïnstalleerd.) Uitpakken van .../yudit-common_2.9.6-8_all.deb wordt voorbereid... Bezig met uitpakken van yudit-common (2.9.6-8) ... Voorheen niet geselecteerd pakket feh wordt geselecteerd. Uitpakken van .../archives/feh_3.1.3-1_armhf.deb wordt voorbereid... Bezig met uitpakken van feh (3.1.3-1) ... Voorheen niet geselecteerd pakket libjpeg9:armhf wordt geselecteerd. Uitpakken van .../libjpeg9_1%3a9b-1_armhf.deb wordt voorbereid... Bezig met uitpakken van libjpeg9:armhf (1:9b-1) ... Voorheen niet geselecteerd pakket libjpeg-progs wordt geselecteerd. Uitpakken van .../libjpeg-progs_1%3a9b-1_armhf.deb wordt voorbereid... Bezig met uitpakken van libjpeg-progs (1:9b-1) ... Instellen van libjpeg9:armhf (1:9b-1) ... Instellen van libjpeg-progs (1:9b-1) ... Instellen van yudit-common (2.9.6-8) ... Instellen van feh (3.1.3-1) ... Bezig met afhandelen van triggers voor mime-support (3.62) ... Bezig met afhandelen van triggers voor hicolor-icon-theme (0.17-2) ... Bezig met afhandelen van triggers voor gnome-menus (3.31.4-3) ... Bezig met afhandelen van triggers voor man-db (2.8.5-2) ... Bezig met afhandelen van triggers voor desktop-file-utils (0.23-4) ... |
Examples
Bash
Note: you need to run this on the Pi itself (not though SSH)!
feh --hide-pointer -x -q -B black -g 1280x800 /home/pi/image.jpg
Python
1 2 3 4 5 6 7 |
import subprocess #Display the image image = subprocess.Popen(["feh", "--hide-pointer", "-x", "-q", "-B", "black", "-g", "1280x800", "/home/pi/image.jpg"]) # You can now close the image by doing image.kill() |
using split:
1 2 3 4 5 6 7 |
import subprocess #Display the image image = subprocess.Popen(['feh --hide-pointer -x -q -B black -g 1280x800 /home/pi/image.jpg'.split()) # You can now close the image by doing image.kill() |
Download
Using Pygame
This is a example to display an image with pygame
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import pygame import os pygame.init() # screen size display_width = 1280 display_height = 800 black = (0,0,0) white = (255,255,255) screen = pygame.display.set_mode((display_width,display_height)) #screen = pygame.display.set_mode((display_width,display_height), pygame.FULLSCREEN) # Fullscreen pygame.display.set_caption('Hallo WERELD!') done = False while not done: for event in pygame.event.get(): if event.type == pygame.QUIT: done = True screen.fill(white) myimage = pygame.image.load('/home/pi/image.jpg') screen.blit(myimage, (60, 80)) # Left, Top pygame.display.flip() pygame.quit() quit() |
In this example we added some text:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import pygame import os pygame.init() # screen size display_width = 1280 display_height = 800 black = (0,0,0) white = (255,255,255) screen = pygame.display.set_mode((display_width,display_height)) #screen = pygame.display.set_mode((display_width,display_height), pygame.FULLSCREEN) # Fullscreen pygame.display.set_caption('Hallo WERELD!') done = False while not done: for event in pygame.event.get(): if event.type == pygame.QUIT: done = True screen.fill(white) myimage = pygame.image.load('/home/pi/image.jpg') screen.blit(myimage, (60, 80)) # Left, Top myfont = pygame.font.SysFont("monospace", 72) scoretext = myfont.render("Hallo Wereld!", 1, (0,0,0)) screen.blit(scoretext, (10, 10)) pygame.display.flip() pygame.quit() quit() |
In this example we added a counter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
import pygame import os import time pygame.init() # screen size display_width = 1280 display_height = 800 black = (0,0,0) white = (255,255,255) teller = 0 screen = pygame.display.set_mode((display_width,display_height)) #screen = pygame.display.set_mode((display_width,display_height), pygame.FULLSCREEN) # Fullscreen pygame.display.set_caption('Hallo WERELD!') done = False while not done: for event in pygame.event.get(): if event.type == pygame.QUIT: done = True screen.fill(white) myimage = pygame.image.load('/home/pi/image.jpg') screen.blit(myimage, (60, 80)) # Left, Top myfont = pygame.font.SysFont("monospace", 72) scoretext = myfont.render("Teller:" + str(teller), 1, (0,0,0)) time.sleep(1) teller += 1 screen.blit(scoretext, (10, 10)) pygame.display.flip() pygame.quit() quit() |
Now place the image on center screen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import os import time import pygame pygame.init() black = (0,0,0) white = (255,255,255) teller = 0 # Get display info displayinfo = pygame.display.Info() # Set display settings screen = pygame.display.set_mode((displayinfo.current_w, displayinfo.current_h)) #screen = pygame.display.set_mode((displayinfo.current_w, displayinfo.current_h), pygame.FULLSCREEN) # Fullscreen pygame.display.set_caption('Tipico') done = False while not done: for event in pygame.event.get(): if event.type == pygame.QUIT: done = True screen.fill(white) showimage = pygame.image.load('/home/pi/image.jpg') #resize image showimage = pygame.transform.scale(showimage, (720, 480)) screen.blit(showimage, ((displayinfo.current_w / 2) - (showimage.get_width() / 2), (displayinfo.current_h / 2) - (showimage.get_height() / 2))) # Left, Top myfont = pygame.font.SysFont("monospace", 72) scoretext = myfont.render("Teller:" + str(teller), 1, (0,0,0)) time.sleep(1) teller += 1 screen.blit(scoretext, (10, 10)) #pygame.display.flip() pygame.display.update() pygame.quit() quit() |