Python图像全屏显示

需要在嵌入式设备上全屏显示图像,使用pil显示图像时,只能通过系统的图像浏览器显示。所以使用Python自带的tkinter
 import Tkinter as tk     这句在Python3中已经改成了   import tkinter as tk

1 top = Tk() #导入tk模块
2 from PIL import Image, ImageTk
3 image = Image.open("lenna.jpg")
4 photo = ImageTk.PhotoImage(image)
5 label = Label(top)
6 label.pack()
7 label.configure(image = photo )
8 top.mainloop()

在Ubuntu下需要安装:
sudo apt-get install python3-tk
sudo apt-get install python3-pil.imagetk
win下无需安装

使用PIL的原因是tkinter自己无法显示jpg图像

功能验证代码:

 1 #!/usr/bin/python3
 2 #!/usr/local/bin/python3
 3
 4 from tkinter import *
 5 from PIL import Image, ImageTk
 6
 7 top = Tk() #导入tk模块
 8 top.attributes("-fullscreen", True)
 9 width=top.winfo_screenwidth()
10 height=top.winfo_screenheight()
11 print(width,height)
12 image = Image.open(‘d:/cur/proj/j20/3.jpg‘)
13 photo = ImageTk.PhotoImage(image.resize((width,height)))
14 label = Label(top)
15 label.pack(expand=YES,fill=BOTH) #让图像在中央填充
16 label.configure(image = photo )
17 top.mainloop()

完成功能验证后,编写了刷图像的程序:

 1 def display_thread():
 2     global label,top
 3     while True:
 4         t1=time.time()
 5         image = Image.open(‘d:/cur/proj/j20/3.jpg‘)
 6         photo = ImageTk.PhotoImage(image.resize((width,height)))
 7         #photo = ImageTk.PhotoImage(image)
 8         label.configure(image = photo )
 9         #top.update_idletasks()
10         time.sleep(0.03)
11         t2=time.time()
12         print(t2-t1)

发现图像显示出现了闪屏,而且帧率只有5~10帧,CPU占用率已达到单核90%
而实测image = Image.open(‘d:/cur/proj/j20/3.jpg‘)
仅需1ms,说明imagetk消耗时间长,无法满足30帧每秒的需求。

尚不知如何优化,换pyqt了

时间: 2024-08-24 06:25:17

Python图像全屏显示的相关文章

python Tkinter 全屏显示

1 #! /usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import Tkinter as tk 5 6 class FullScreenApp(object): 7 def __init__(self, master, **kwargs): 8 self.root = master 9 # self.tk.attributes('-zoomed', True) # This just maximizes it so we can see t

Xcode 设置图片全屏显示

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.// UIImage *image = [UIImage imageNamed:@"initial_page_bg.jpg" ]; UIImageView *imageView = [[UIImageView alloc]initWithImage:image

Linux 命令 - watch: 反复执行命令,全屏显示输出

watch 命令周期性地执行命令,全屏显示输出.可以通过 watch 命令反复执行某一程序来监视它的输出变化. 命令格式 watch [-dhvt] [-n <seconds>] [--differences[=cumulative]] [--help] [--interval=<seconds>] [--no-title] [--version] <command> 命令参数 -n, --interval 指定间隔时间.默认情况下,watch 每隔 2 秒执行一次命令

Android全屏显示(代码实现)

// 去掉窗口标题 requestWindowFeature(Window.FEATURE_NO_TITLE); // 全屏显示 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 注:写在activity里

Fullscreen API 全屏显示网页

第一次看到应用 Fullscreen API 全屏显示网页,是 FaceBook 中的照片放大.作为一个比较新的 API,目前只有 Safari.Chrome 和 FireFox 三种浏览器支持该特性.因为尚未发布正式版的标准,所以必须使用浏览器特定的方法,也就是应用添加前缀(webit/moz)的方法. 这个 API 不仅能够使整个页面全屏显示,也可以使页面中的某个元素全屏显示.它的设计初衷是为了全屏显示 HTML5 视频和游戏,以便更全面的替代 flash 功能.尽管还有很多有待完善的地方,

Android中界面实现全屏显示的两种方式

在开发android的应用当中,我们会遇到将一些界面设置为全屏显示的格式,有两种实现的方法.其一是在Java代码中实现,其二是在配置文件中实现. 1. 在Java代码中设置 super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); //无title getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, Window

【VC++学习笔记五】SDI|MDI的全屏显示

一.Mainframe中添加一个记录是否全屏状态的变量BOOL m_bFullScreen. 二.工具栏添加一个按钮,进行全屏的操作,响应事件函数写在Mainframe中. 三.在响应函数中,添加如下代码: void CMainFrame::OnFullscreen() { if (!m_bFullScreen) { this->ModifyStyle(WS_THICKFRAME|WS_CAPTION,NULL); this->MoveWindow(CRect(0,0,::GetSystemM

QT 全屏显示子窗口

QT 中全屏显示子窗口的方法 QT 中窗口部件 QWidget 成员函数 showFullScreen();是用于将窗口部件全屏显示 但是他只对窗口模式的部件有用.子窗口的特征是 Qt::SubWindow不是独立的窗 口.因此对其调用 showFullScreen无效.通过对子窗口调用setWindowFlags Qt: :Dialog或 setWindowFlagsQt::Window将其设为窗口模式后即可 调用 showFullScreen();进行全屏显示了. 相对于子窗口的全屏显示方法

Android应用程序全屏显示方法

导入两个包: import android.view.Window; import android.view.WindowManager; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(W