Ai đã từng sửa dụng PhotoJoy trên Windows chắc hẳn đều thấy rất thích thú với tính năng của phần mềm này. Ảnh bạn, bạn bè, người thân được chọn ngẫu nhiên từ các thư mục trên máy tính và "đóng khung" ngay trên màn hình nền. Ảnh và "khung ảnh" đều có thể tự động thay đổi sau mỗi khoảng thời gian nhất định. Ngoài ra còn có các hiệu ứng đặc biệt sống động với cái tên "PhotoToys".
Đáng tiếc là PhotoJoy chỉ hoạt động trên Windows, trên Ubuntu chỉ có các chương trình thay đổi ảnh nền đơn giản. Hoạt động ổn nhất có lẽ là Desktop Drapes (tự động thay đổi ảnh nền sau thời gian nhất định, viết bằng C# và chạy qua mono 8-}). Mình đã định xem thử mã nguồn của chương trình này nhưng không hiểu sao các liên kết đều chết cả >"<. Wallpapoz (tự động thay đổi ảnh nền theo thời gian hoặc mỗi khi chuyển vùng làm việc, viết bằng Python) có tính năng khá đặc sắc nhưng đang trong giai đoạn phát triển đầu, hiện chưa được đóng gói và chưa có applet. Các chương trình khác thì hầu như đều hoạt động không ổn định (nếu có hoạt động).
Thiết kế một chương trình tương tự như PhotoJoy trên Ubuntu là nhiệm vụ tương đối phức tạp đối với mình vì chưa hề có kinh nghiệm lập trình trên Linux bao giờ. Để làm kịp mừng sinh nhật một người bạn, mình quyết định dùng mã nguồn có sẵn của Wallpapoz và thêm chức năng sinh ảnh nền tự động. Chương trình này viết trên Python với giao diện đồ hoạ GTK được thiết kế bằng Glade. Để sinh ảnh tự động mình sẽ cần tạo ra các tệp SVG mẫu để "lắp" ảnh và chuyển thành ảnh raster. Có thể "lắp" ảnh bằng cách thay nội dung trường "xlink:href" trong thẻ "image" - đơn giản là so khớp vài biểu thức chính quy. Bước chuyển đổi có thể sẽ được thực hiện bằng chương trình rsvg.
Tóm tắt các bước thực hiện như sau:
- Bắt đầu khi đến thời điểm hoặc khi chuyển vùng làm việc
- B1: chọn ngẫu nhiên khung ảnh
- B2: chọn ngẫu nhiên một số hình ảnh (tuỳ theo yêu cầu của khung)
- B3: thay đường dẫn của hình ảnh vào khung --> tạo ra tệp /tmp/xyz.svg
- B4: dùng rsvg để chuyển thành xyz.png
- B5: đổi hình nền thành xyz.png
Các thành phần của chương trình như sau:
- bộ chỉnh sửa cấu hình
- trình nền thay đổi ảnh
- applet hiển thị thông tin
0 comments:
Post a Comment