一个类似于Line of Action的随机显示本地图片的程序。可以对着自己收集的参考图练习,不用受制于非会员的图库和自己的选择困难症了。
可以遍历给定目录下的所有图像,通过方向键右随机查看。
支持以原顺序查看之前随机的图片,支持定时切换图片,支持暂停定时,支持图片旋转。
可以将遍历的文件路径放在内存里,每次运行程序重新遍历;也可以将文件路径保存在数据库中,省去每次遍历目录的时间。
可以设置全屏/窗口大小、窗口背景色。可以让每次随机的顺序相同。
戳这里
首先选择一个心仪的图片文件夹,将其路径粘贴到程序根目录下的目录.txt
中。
- 如果根目录下没有
目录.txt
可以手动创建,也可以运行一次程序让程序创建。 - 文件夹中可以嵌套文件夹,也可以包含非图像文件(但是文件多的话会延长文件树生成速度)。
- 可以一次性放入多条路径。此时请每行只粘贴一条路径。
- 路径需要使用绝对路径。
- 支持的图片格式:
.jpg .png .jpeg .bmp .tif .tga .eps .psd
想要增加支持的图片格式需要使用源码。 - 根目录下的
config.ini
是配置文件。
运行模式指遍历后的文件路经保存方式,通过修改配置文件参数mode
指定。有ontime
和mongodb
两个选项。
默认使用实时模式。
将生成的文件树保存在内存里。每次运行程序需要重新生成文件树。文件数量较少时比较好用,省去配置数据库的烦恼。
那么什么程度文件算多呢,...自己试试?1w以下?
使用MongoDB数据库保存文件树。相比实时模式只需要生成一次文件树,对于包含大量图像的文件夹来说省去了每次启动程序等待文件树生成的时间。 通过使用不同的数据库表还可以快速更改目标文件树。
使用数据库模式需要安装pymongo。具体操作请看下文-1.使用MongoDB
esc ctrl+q q
+ 关闭图片窗口 退出程序
f ctrl+f
全屏/窗口切换
方向键右(->)
下一张图片
方向键左(<-)
上一张图片
<(,逗号)
顺时针旋转90度
>(。句号)
逆时针旋转90度
enter(回车键)
开始/暂停计时切图
鼠标滚轮
上一张/下一张图片
除了这些,还支持matplotlib的快捷键。如果有需要(缩放什么的)可以 去看看 。
通过修改配置文件参数time
设置。单位是秒,默认是600秒(10分钟)。计时结束后会自动切换到下一张图片。
通过修改配置文件参数background
设置。默认为黑色。可以通过(部分)颜色的英文单词指定。
可接收参数请看这里
可以通过修改配置文件seed
参数设置随机数生成器的种子,固定随机模式。每次运行会输出当前使用的种子(默认为程序启动时间)。
指定窗口尺寸为800*600 设置随机数生成器种子为42 使用数据库模式(时间间隔10分钟、背景为黑色)
screensize=800,600 seed=42 mode=mongodb
效果:
用screensize
指定。想调整尺寸请传入宽和高,单位是像素,宽在前高在后,用英文逗号分隔,如600,600
。
也可以在运行时手动拖动窗口修改。这个功能有什么意义
用targetpath
指定,默认为根目录下的目录.txt
。如需指定需要传入目标文件的绝对路径。
debug模式会输出每张图片的地址。
通过mode=mongodb
指定使用数据库模式。
client
参数指定数据库地址,默认是本地数据库。database
参数指定数据库名称,默认为RandomImage
。
collection
参数指定数据库表名,默认为ImagePath
。
初次使用数据库或者图片目录发生改动需要使用initialize
参数调用数据库初始化方法,将文件树保存到数据库内。
- 注意:
initialize
方法会清空当前数据库表之后再保存新文件树。
当图片目录中添加新图片可以使用update
调用数据库更新方法,将新图片的路径保存到数据库中。
目录中少几张图片无需调用该方法,程序运行时会自动删除无效路径。
当想清除数据库表中的数据时可以通过clear
调用删除方法。
- 一定要想清楚再删库。
- 程序初始化稍微有些慢。
- 暂停计时切图的时候没有提示,你可能不清楚当前计时是运行还是暂停的状态。
- 暂停计时时计时器其实还在走,如果等待时间超过设定值,在取消暂停后会立刻切换到下一张图片。
clear
参数慎用!会删除当前配置的数据库表!- 运行的时候会切换不了窗口。这是个bug,得改。
- 加载大图片的时候会费点劲。
在某些版本下会有白边(我只试了matplotlib 2.0.2),我也没定位到bug,也不一定会修。
pillow
matplotlib
pymongo (可选 不用数据库模式可以不装)
基础设置
-m
--mode
文件树保存模式 可选ontime
和mongodb
默认为ontime
-t
--time
指定切换图片的等待时间 单位为秒 默认为600秒(10分钟)
-b
--background
指定背景颜色 默认为黑色
--seed
指定随机数生成器的种子
数据库相关
--client
指定数据库地址 默认是mongodb://localhost:27017/
--database
指定数据库名称 默认为RandomImage
--collection
指定数据库表名 默认为ImagePath
--initialize
调用数据库初始化方法 布尔值 默认为False
--update
调用数据库更新方法 布尔值 默认为False
--clear
调用删除方法 布尔值 默认为False
慎用!
高级设置
--screensize
指定窗口大小 设置请看下文
--showimage
是否显示图片 默认显示 只是为了调试方便 给数据库喂数据时也挺好用
--configfile
--targetpath
irrelevant
-v
--version
版本号
-d
--debug
debug模式
提前读取几张图片,在显示图片时可以少花点时间(但是好像影响了初始化时间?)。
反正我每次也画不了几张
不建议自己修改,但是有需求可以去imgcache.py
。
INITCACHE
是初始化缓存大小,MAXCACHE
每次更新后最多缓存数量,CACHE
是启动更新的标志。
CLEARCACHE
是总缓存的大小。
理论上PIL能打开的图片都可以支持,但是我只添加了几个我认为比较常见的图片格式。
添加新的图片格式需要修改dirtree.py
中的ImageType
,将想添加的文件后缀加到列表里。注意:对大小写敏感。
使用debug模式需要通过--configfile
关闭配置文件,即配置文件的debug比命令行参数的debug优先级高。
debug模式的参数需要通过main.py
中指定。debug模式会输出每张图片的地址。
文件遍历通过pathlib
的iterdir
方法递归实现。
数据库通过pymongo
实现。
随机通过random.randint
结合列表/find_one
方法的skip
参数实现。
图片通过PIL
读取,缓存通过Thread
实现,显示通过matplotlib
实现。按键通过mpl_connect
实现。