顯示具有 程式 標籤的文章。 顯示所有文章
顯示具有 程式 標籤的文章。 顯示所有文章

2025年8月26日 星期二

Python使用ctypes調用Windows API在64位元的看圖軟體

這篇就真的是用Python寫Windows API的最後篇章了
整個Windows API非常的繁雜,再加上包一層Python上去
就算是只想要的簡單應用,也是遇到不少挫折
上幾篇就是很好的證明
搞的東西沒有很大,一連寫連四篇blog
目前弄好的東西已經足夠後續的使用
從解決舊問題,到開發新功能,使用新功能遇到問題,到最後綜合所學弄個小成果
這樣算是十分完整的起承轉合了
只是從程式寫出來到要打成文章說明又多花了比想像中還長的時間
這最終章要呈現的就是選取目錄,並顯示目錄中圖檔的
一個小程式

2025年8月8日 星期五

Python使用ctypes調用Windows API在64位元子視窗顯示圖像方法

承上一篇
本來是想在這一篇就作結的
想稍稍介紹上篇最後所提,圖像顯示的子視窗化後就接完整應用
只是圖像顯示的子視窗化的實作雖然有成功
可是三個實作方法裡,有一個是卡住的
直接跳過嗎?又很不甘心
實在不希望要再留個問題待未來處理
只好再多花時間解決它,然後再寫一篇
這篇介紹的就是子視窗化顯示圖像的三個作法

2025年8月4日 星期一

Python使用ctypes調用Windows API在64位元執行GDI+

上一篇把一些陳年問題解決了
就接著玩新的東西,該讓Windows API在Python上顯示圖片了
以前學Windows API時,原本的GDI只能讀BMP檔
但事隔多年,小畫家都支援多種格式了
微軟肯定有新的函式庫可以用
用Google找了一下,很快就找到了GDI+
GDI+支援jpg、png、gif、tiff等多種常用格式
那就是改使用它來提供顯示了

不過學習使用GDI+跟我想像中的不一樣
因為上一篇學到的東西,沒什麼派上用場的地方
而且要不是有Grok與ChatGPT等越來越好用的AI助陣
我真的寫不出來
因為微軟提供的C++範例把GDI+實作的函式庫包起來了
可以用Python呼叫的函式,沒有在範例裡顯示
算是藏在更深層的文件中
只靠我有限的時間與精力要爬到那些東西,不知道要花多久啊
還好有AI,那麼速速進入正題

2025年7月31日 星期四

Python使用ctypes調用Windows API的64位元處理

老實說,使用win32api來寫視窗程式真的蠻討厭的
步驟較現今的一堆GUI套件來說,繁瑣不少
加上又是用Python呼叫來用的話,隔了一層又更加的複雜與麻煩
當年走了歪路這樣寫是有點逼不得已
現在用tk多方便啊,就很久不這麼幹了

不過玩AI玩了好一陣子,看著漸漸日益強大的性能
突然想起一件陳年舊帳,2017年的這篇
Python環境下最單純的GUI產生法~使用ctypes調用Windows API~
當年卡在無法於Python的64位元版本環境中運作
不知現今的AI能否為我解開這問題
試著花一點時間試試後,真的都解開了
感謝現在AI發展之神速
很多舊的,解不了的程設問題拿去問AI,現在都可以得到解法
甚至在開發新功能時
讓我省去了很多很多跟一堆文件奮戰的時間
直接直指目標把事情完成

總之這次不但解決文章中無法在64位元Python執行問題
還有一個目錄選擇視窗無法使用的問題,也一併處理掉了
這篇就來把這些都記錄下來

2025年4月21日 星期一

Python Websockets舊版改寫為15.0.1版目前寫法範例

這次筆記是修正Websockets改為15版的寫法
因為把Python昇級,加上Websockets自己也升級
所以之前這篇使用Python的websockets套件控制樹莓派的寫法不能用了
要改新的寫法
這部分其實很簡單
但我因為太久沒碰這隻程式忘光了基礎
還是搞了不短的一段時間(花了半天 Orz)
為了之後能快速使用,留下這個記錄吧

2025年4月19日 星期六

Python的requests與aiohttp筆記

只要是有研究過使用Python的爬蟲程式的話
這兩個應用名稱應該是熟到不行了
這次剛好先後用上,所以做個筆記

2025年3月20日 星期四

使用Podman Desktop架設Mtranserver離線翻譯服務

在討論區看到網友推薦SakuraLLM可以離線跑翻譯時
就興起了要在工作用的筆電上弄個離線翻譯系統的念頭
然後找著找著就看到Mtranserver這個應用
https://github.com/xxnuo/MTranServer
看來非常的輕量化,決定要來試試
上面要搭配Docker Desktop使用,就抓Docker Desktop下來安裝
裝完要啟用時,出現使用條款提示,其中一個條款:
員工超過250人以上或年營業額千萬以上公司要付費
商用要付費的話,那...換其它的替代軟體吧
趕快移除掉Docker desktop後,替代品很快就找到了,就是Podman desktop

可是這兩個是不同的軟體,雖說應用與指令的同質性很高
但還是有點不同,加上根本沒碰過這種「容器管理」的應用
花了一兩天才搞懂,但只搞懂應用,設定上還是似懂非懂
最後靠著新的AI「Grok」問到了正確的設定與解說,才正式完成
以下就詳述一下遇到的問題與該如何設定吧

2025年2月2日 星期日

EPUB 3.0版固定配置圖片格式使用說明與實作

有了電子紙閱讀器後,就有想過把一些圖片給包成電子書格式
也有好心的網友給了我這個網址
https://github.com/dpublishing/epub3guide
不過我幾乎是完全忘了這件事,隔了至少有兩年了吧
大過年的放鬆之下,卻突然想起來
那就來搞搞吧
花了4個小時左右,也如願讓我確定整個格式
用10幾張的圖片做出了成果

自己想要的功能並不複雜
就是想要包圖片而已,所以這篇並不會詳解所有電子書epub的格式
只有針對第6個範例練習,Fix Layout Image(固定配置圖片)的部分
https://github.com/dpublishing/epub3guide/blob/master/practices/06_Fixed_Layout_Image/
進行電子書格式的大概說明與解說
還有如何更改成自己想要的樣子

2021年8月30日 星期一

樹莓派一代再次的重灌 Orz

原本想說三、四年間應該不用再重灌的
結果還是遇上了不得不重灌的情況
好加在去年2月重灌時有留筆記,一些問題解決的很快
但還是缺了一些後來搞出來的東西
所以趁著記憶還在,趕快再筆記一下。

2020年12月11日 星期五

用Python產生ICON(圖示)檔小筆記

本來是想併入上一篇的內容
後來想想主題不同還是分開的好
就另外寫一篇啦

使用的套件是Pillow
來源作法是這篇所提
https://stackoverflow.com/questions/45507/is-there-a-python-library-for-generating-ico-files
說明就不用了,直接看範例就好
from PIL import Image
#載入圖片檔
filename = 'sample.png'
img = Image.open(filename)
#單純把圖片轉成圖示檔
img.save('sample.ico')
#如果要做多尺寸圖示檔,先建立尺寸的List,最大只到255,以上不接受
icon_sizes = [(16,16), (32, 32), (48, 48), (64,64), (128,128)]
#存檔時,將尺寸參數引入
img.save('sample.ico', sizes=icon_sizes)

把Python打包成執行檔的Pyinstaller筆記

從接觸Python以來,一直都沒有很認真的處理執行檔的問題
因為都是寫自己在用的客制化工具,所以一直都沒有這種需求存在
不論是自己的電腦下,或是掛在樹莓派下
都有python環境的可以跑
但是要給別人用的話,在對方沒有python環境下
就確實需要編譯成執行檔了

python轉執行檔,用google下去查
目前大宗就是使用pyinstaller
使用上也很簡單
安裝完pyinstaller後,只要在python的環境下執行pyinstaller example.py
就可以在dist的子目錄得到example目錄與裡面的example.exe檔
想要單一個執行檔的話
下達pyinstaller --onefile example.py
之後在dist的子目錄裡,就可以得到exmaple.exe的單檔
然後問題就來啦

2020年12月4日 星期五

Python產生PDF套件Reportlab

有時真的是有需求才有動力
這次會去學這個套件
還是同事拜託能不能將舊有浮水印,印在現有的PDF文件上
然後關鍵字一下(python pdf watermark),答案就出來了
使用Reportlab搭配pypdf或pdfrw
哇靠,真是萬能的Python,好像沒什麼是搞不定的

再深入研究一下要怎麼做才可以將浮水印的圖與PDF結合
這才發現Reportlab不是單純的將圖檔合併轉成PDF的套件
而是可以獨立產生完整PDF的集合工具,舉凡寫字、畫圖、製表等等
ReportLab裡都有不少的套件可以使用
比想像中的強大非常多
那麼正式開始啦

2020年11月4日 星期三

Autolisp初學感想與筆記

工作上一直有在使用AutoCAD處理圖檔修改與輸出
其實一直很想學這個Autolisp程式語言
因為學會後,可以讓一些作業從每一筆都人工處理
變成一組指令就可以完成
大大減少工作的時間
只是...工作超過10年裡一直沒去學
與其說工作繁忙,不如說難以「輕鬆」跨過那古老,很不一樣的語法
畢竟,這段期間我也多學會了python
但autolisp的教學網頁看沒幾頁就覺得看不太下去 
跟天書一樣,看不懂啊 XDXD

不過,今年也總算跨出了這第一步
因為,遇到了要一口氣改近200張的圖檔的情況
雖然動作很簡單,只要打開圖檔,選擇固定不要的元件,然後刪除後存檔
做這麼無聊的動作200次,還是感覺很浪費時間
不然就拿來學autolisp吧
上呀

2020年10月29日 星期四

Yolo系列再開,這次用的是YOLO v5

上一篇提到,是因為要看懂一點用pytorch寫yolov4的運作
所以才會去學pytorch的基礎
雖然pytorch是學了一點皮毛這點不錯
但是,yolov4這邊卻是進展緩慢啊
同訓練集感覺YOLOv4的運算量比v3還大很多
加上電腦的顯卡太弱了,只有2G,所以只能用CPU訓練
進度超緩慢...
(在原本的成果只訓練到60epochs就花了近8小時)
就在訓練期間,爬到了這篇,YOLOV5在樹莓派上的測試
這Yolov5的運算量似乎很小,才可以在樹莓派上跑得用
不然來試試吧

2020年10月16日 星期五

PyTorch學習後實作筆記

在接觸Deep Learning後,除了課堂上所學的TensorFlow
慢慢也會知道其它的工具,而最有名的一個就是PyTorch
本來光是學個TensorFlow就夠頭痛的
要再學其它的實在有點懶
不過推薦的人都說這pytorch比tensorflow簡單
好學,好用,好改
看著看著還蠻心動的

在接觸過以pytorch寫的yolov4工具時
以「不然就至少學點基礎吧」的心態下去接觸
第一時間就是看不太懂,覺得有點被騙了(哪有比較簡單)
感覺多寫了好多東西啊
最後是看了Python Programming上的教學影片後
才總算學了基礎
順便學英文

不過真的會了嗎?
想起以前學習時,有時總覺得應該懂了
寫試題時卻往往卡住
開頭會了,變化確不會,實在稱不上學會啦
那麼要知道會不會就是來一段實作啦
就以TensorFlow官方影片Intro to Machine Learning (ML Zero to Hero - Part 1)裡範例

改成pytorch的形式來驗證吧

2020年9月26日 星期六

Jupyter Notebook使用筆記

雖然使用Python與Anaconda已經好一陣子
不過我大概是今年4月左右才開始使用到Jupyter Notebook
為什麼這麼晚才碰呢?理由無他,就只是沒人教而已
反正用終端機(Terminal)模式,還是用notepad++或visual studio code寫完再跑都能跑
對我來說並不是絕對必要學會
只是一直在網路上找他人寫好的範例才發現不少人用這個工具
那就來試用用看吧

一試之下
好用,真的好用,尤其是在寫範例與學習的階段上,這東西真是超級好用
真是,唉~~~相見恨晚呀
你可以一段,一段地寫,然後分段去跑出你要的結果

而且運行完後,想修改後再重跑時
不像之前用Terminal模式跑,要整段重新輸入或從別的地方貼過來

你只要回到那格,修改,就可以再跑一次
所以非常適合對人進行教學,或是自學跑範例
同時,既然是跟Anaconda綁一起的,當然是可以配合跑虛擬環境
實際運作又只需要瀏覽器就可以編輯,真是輕巧好用

那4月就開始用,為什麼要到快年底才寫這一篇介紹
因為,Jupyter Notebook使用虛擬環境設定之前是設定成功了,但忘了記錄無法重現
伴隨著工作上暫時不用建新的虛擬環境,就一直放置這件事
一直到最近必須再開個新虛擬環境才不得不再想辦法解決這個問題
現在解決了,就趕快寫這篇,把步驟記錄下來
唉~~真的是老了,還是要靠筆記了
下面就是設定與注意事項

2020年9月11日 星期五

使用Python的websockets套件控制樹莓派

之前那一篇利用網頁控制樹莓派(Raspberry Pi)運作
雖然實作出來,點擊後可以讓樹莓派自行運作的程式
不過,實作的交握有點旁門左道
是靠php發射socket給背景程式去運作
怎麼想怎麼怪,雖然讓我硬幹出來了,但總想著要用正規一點的作法
這次在獲得好用的python websocket套件後
正式捲.土.重.來
把之前的程式改寫了一遍
雖然還稱不上完美
但交握確定是繞過了php,而直接python寫出的程式執行websocket交握了

至於會希望使用websocket來取代原本的寫法
最基本原因是這樣會讓javascript的寫法會更簡潔
現在主要瀏覽器的javascript引擎都支援websocket了
只要簡單地寫websocket = new WebSocket("ws://server_adress:port/");
然後靠websocket.send()就可以送出想要的命令
不用寫個ajax落落長才送得出命令
接著靠websocket.onmessage()就可以取得送回來的資料
好寫多了啊
之前是懶得架websocket伺服器
現在有簡單python的套件可用,那當然好好地來用一下啊

2025/04/21 更新一下
這篇的寫法已經不能完全使用了,新的範例請看這一篇
Python Websockets舊版改寫為15.0.1版目前寫法範例

2020年2月26日 星期三

再來一次,重灌第一代樹莓派作業系統

重灌的理由是
在機子裡的版本太舊了
是debian7版wheezy
現在的Raspbian都已經是10版buster
這造成了去年底舊版的wheezy就無法有更新可用
而且原本灌的是桌面版,還是用NOOB版灌的
但目前只當個小伺服器用,其它不必要的軟體過於肥大
也想減肥減肥
趁著最近一點空檔
備份了重點資料後
就開始重灌成lite版,進行昇級的不歸路啦!

2020年1月7日 星期二

深度學習進階應用-YOLO實作-心得篇

去年(2019)開始學了人工智慧
總想有所應用
而且既然是工作上學的,最好也是用在工作上
能把一些事情自動化處理最好
這樣就能多花心思在其它更花頭腦的事上
想了好一陣子,最近才想到個應用可以試試看
只不過,很快就卡在第一關
因為雖然現在已經會對圖片進行分類了
但只能一張圖一樣東西
一張圖同時有兩件以上的東西,分不出來........
更不用說,還要知道東西在圖的哪裡了

很快地想到了一開始學的時候
有老師介紹過的YOLO(You only look once),是一種對物件分類與進行定位的技術
然後資料查啊,找啊,才知道這樣技術,叫作Object Detection
目前除了YOLO之外
還有SSD(不是硬碟那個,是Single Shot MultiBox Detector)與Retinanet等演算法可以做這樣的事
這發展已有一陣子了,所以自然是有人寫了可以用的函式庫
那麼自然是拿別人寫好了來當基底啊
哈哈哈哈,想的這麼簡單,自然是撞壁了........

2019年12月13日 星期五

用深度學習預測股市範例實作參考與修改

python用了好一陣子,真的是很好用的工具
適逢其時,現在最火熱的AI,深度學習套件TensorFlow也是以python開發
既然都入門python了,怎麼能放過,自然是上網找了些範例來學學
只是TensorFlow的基礎概念不是那麼直觀
一開始就卡關了,加上工作繁忙,還是只能先以工作為主
去年從一個圖像文字識別範例完成後就放下了
直到今年開始接觸到了Keras
這個函式庫用起來直觀多啦
也才終於讓我入門到深度學習的大門
感謝Keras,讚嘆Keras