現(xiàn)在手機(jī)的拍照功能日趨強(qiáng)大踢匣,每個(gè)人電腦上想必都至少有幾十個(gè)G的照片吧。全打印出來實(shí)在是太費(fèi)錢了戈抄。而閑置的舊電腦完全可以利用起來播放這些照片离唬。下面就介紹利用Conky和Python實(shí)現(xiàn)隨機(jī)播放相片的功能
Conky
Conky是一個(gè)顯示系統(tǒng)狀態(tài)的Linux軟件,可以圖形化顯示CPU, 內(nèi)存划鸽,網(wǎng)絡(luò)流量等输莺。下面是一個(gè)來自官方網(wǎng)站的示例圖。
conky.png
它的配置文件語法很簡單裸诽,分為配置和顯示兩部分
conky.config={
own_window=true,
own_window_class='Conky',
own_window_type='override',
own_window_colour='ffffff',
own_window_transparent=true,
double_buffer=true,
update_interval=1,
use_xft=true,
};
conky.text = [[
${execpi 300 /home/lxq/myscripts/change_photo.py}
]]
conky.config里面是實(shí)現(xiàn)顯示圖片的必要部分嫂用。conky.text 則是用execpi每300秒調(diào)用一個(gè)Python代碼顯示圖片。 把上面的代碼保存為一個(gè)文件conkyfile崭捍。 執(zhí)行conky -c conkyfile
即可
Python端代碼
change_photo.py 必須返回${image sample.jpg -p 20, 400 -s 400x400}
這樣的格式尸折。sample.jpg 可以替換成你需要的照片的完整文件路徑。p參數(shù)即position殷蛇,照片在conky顯示區(qū)域的相對位置实夹。 s參數(shù)為size,即照片的寬度和高度粒梦。
下面是change_photo.py的完整代碼
#! /usr/bin/python3
import os,random
from PIL import Image
from PIL import ExifTags
def rotate(image):
for orientation in ExifTags.TAGS.keys() :
if ExifTags.TAGS[orientation]=='Orientation' : break
exif=dict(image._getexif().items())
if exif[orientation] == 3 :
image=image.rotate(180, expand=False)
elif exif[orientation] == 6 :
image=image.rotate(270, expand=False)
elif exif[orientation] == 8 :
image=image.rotate(90, expand=False)
return image
folder="/home/user/photo/Camera"
photo=random.choice([f for f in os.listdir(folder) if f.endswith(".jpg")])
photo=os.path.join(folder,photo)
img=Image.open(photo)
img=rotate(img)
img.thumbnail((500,700))
tmpimage=os.path.join("/tmp","slide.jpg")
img.save(tmpimage)
img=Image.open(tmpimage)
width,height=img.size
print(photo)
print(f"${{image /tmp/slide.jpg -p 10,420, -s {width}x{height} -n }}")
- bash會讀取第一行亮航,拿到python的完整路徑,然后執(zhí)行下面的代碼匀们。記著 要執(zhí)行chmod +x change_python.py 缴淋,給這個(gè)python可執(zhí)行權(quán)限。
- 智能手機(jī)和部分高端相機(jī)有傳感器可以感知你拍照時(shí)是橫拍還是豎拍泄朴,然后存在相片的exif信息里重抖。rotate函數(shù)會讀取照片的exif獲取拍照方向信息,然后旋轉(zhuǎn)照片到正常角度祖灰。不然就會顯示倒立的人了钟沛。
- 第19行,指定你的照片目錄地址局扶,注意是完整路徑恨统。
- 第21行,random.choice 會從列表中隨機(jī)選擇一個(gè)三妈。 這里要過濾一下畜埋,只取jpg文件。
- thumbnail 會生成縮略圖并保持圖片比例
- 第29行畴蒲,存到tmp目錄中
- 第32行悠鞍,取出圖片寬度和高度
- 第36行,輸出Conky需要的格式
小結(jié)
Conky是很強(qiáng)大的工具模燥。雖然官方推薦lua狞玛,但你可以用你喜歡的任何開發(fā)語言輸出它支持的格式。Python有足夠的庫可以很快的開發(fā)涧窒,就差你的想象力了心肪。