

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>image &#8211; MaxCodeReview</title>
	<atom:link href="https://codereview.max-everyday.com/tag/image/feed/" rel="self" type="application/rss+xml" />
	<link>https://codereview.max-everyday.com</link>
	<description>分享Max收集的小程式</description>
	<lastBuildDate>Sun, 04 Jan 2026 04:39:40 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://codereview.max-everyday.com/wp-content/uploads/2020/07/cropped-logo1_x512-32x32.jpg</url>
	<title>image &#8211; MaxCodeReview</title>
	<link>https://codereview.max-everyday.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>影像邊緣平滑與雜點清理</title>
		<link>https://codereview.max-everyday.com/smooth_sharp/</link>
		
		<dc:creator><![CDATA[max-code-review-usr1]]></dc:creator>
		<pubDate>Fri, 26 Dec 2025 16:43:30 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[字體]]></category>
		<category><![CDATA[image]]></category>
		<guid isPermaLink="false">https://codereview.max-everyday.com/?p=2059</guid>

					<description><![CDATA[處理影像遇到鋸齒。掃描圖檔常有雜點。這影響辨 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>處理影像遇到鋸齒。掃描圖檔常有雜點。這影響辨識準確。程式碼提供修復方案。利用骨架提取重建邊緣。搭配像素樣式比對清除雜訊。適合處理黑白文件或數位掃描圖。</p>



<p>Max腳本檔案下載：<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/smooth_sharp.py">https://github.com/max32002/MaxFontScripts/blob/master/smooth_sharp.py</a></p>



<p>這個版本與「<a href="https://codereview.max-everyday.com/smooth_pattern/">套用多重濾鏡，精確修復各種特定的筆畫瑕疵</a>」這篇文章的差異在線條較圓滑，優點是產生的字型檔案會較小，缺點是，風格也消失的很嚴重，例如：預期的勾筆，會變成一個轉角的彎。</p>



<p>由於是使用scikit會造成交叉處可能被凸出或凹陷。這部份，等有空再來解，目前算是開發（除錯）中的版本。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">環境準備與安裝</h2>



<p>使用前需要準備開發環境。確保安裝 opencv-python 套件。還有 numpy 與 scikit-image。這些工具提供影像處理核心運算。</p>



<pre class="wp-block-code"><code>pip install opencv-python numpy scikit-image
</code></pre>



<h2 class="wp-block-heading">核心功能邏輯</h2>



<p>核心功能分為兩個階段。第一階段是 smooth_sharp_edges 函式。它提取影像骨架。計算每個點到邊緣的距離值。利用超取樣重新繪製平滑圓點。最後縮放回原始尺寸。這種做法能有效去除毛邊。</p>



<p>第二階段是 apply_pattern_cleaning_fast。這部分針對微小像素樣式進行清理。程式自動比對特定區塊。若符合定義的雜點特徵。就替換為正確像素。</p>



<h2 class="wp-block-heading">使用範例與指令</h2>



<p>程式支援單一檔案。也支援資料夾批次處理。透過命令列執行。參數 input 指定來源。參數 output 指定存放位置。</p>



<p>範例指令：</p>



<pre class="wp-block-code"><code>python smooth_sharp.py --input ./raw_images --output ./cleaned_results
</code></pre>



<p>如果沒有指定輸出路徑。程式會自動在輸入目錄旁建立新資料夾。處理完成的圖片會轉為白底黑字存檔。</p>



<h2 class="wp-block-heading">自定義清理樣式</h2>



<p>可以在 get_patterns 函式內擴充。定義 p 陣列為瑕疵樣式。定義 r 陣列為修正後的結果。程式會自動執行四個方向旋轉比對。不需要手動撰寫旋轉邏輯。這對處理特定硬體產生的掃描雜訊非常有效。</p>



<p>這是實用的影像預處理工具。適合處理黑白文字。或是改善手繪線條品質。</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>套用多重濾鏡，精確修復各種特定的筆畫瑕疵</title>
		<link>https://codereview.max-everyday.com/smooth_pattern/</link>
		
		<dc:creator><![CDATA[max-code-review-usr1]]></dc:creator>
		<pubDate>Fri, 26 Dec 2025 13:44:46 +0000</pubDate>
				<category><![CDATA[字體]]></category>
		<category><![CDATA[Font]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://codereview.max-everyday.com/?p=2048</guid>

					<description><![CDATA[為了方便擴展，我將程式結構重組。現在你可以定 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="779" height="707" src="https://codereview.max-everyday.com/wp-content/uploads/2025/12/2025-12-26_07-55_k1.jpg?v=1766706943" alt="" class="wp-image-2049" srcset="https://codereview.max-everyday.com/wp-content/uploads/2025/12/2025-12-26_07-55_k1.jpg?v=1766706943 779w, https://codereview.max-everyday.com/wp-content/uploads/2025/12/2025-12-26_07-55_k1-230x209.jpg?v=1766706943 230w, https://codereview.max-everyday.com/wp-content/uploads/2025/12/2025-12-26_07-55_k1-350x318.jpg?v=1766706943 350w, https://codereview.max-everyday.com/wp-content/uploads/2025/12/2025-12-26_07-55_k1-480x436.jpg?v=1766706943 480w" sizes="(max-width: 779px) 100vw, 779px" /></figure>



<p>為了方便擴展，我將程式結構重組。現在你可以定義一個列表，裡面存放多組 <code>pattern</code> 與 <code>replacement</code> 的配對。程式會自動對每一組配對執行四個角度的旋轉掃描與替換。</p>



<p>Max腳本檔案下載：<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/smooth_pattern.py">https://github.com/max32002/MaxFontScripts/blob/master/smooth_pattern.py</a></p>



<p>這個版本與「<a href="https://codereview.max-everyday.com/smooth_sharp/">影像邊緣平滑與雜點清理</a>」文章的差異在：優點是風格也消失較少，缺點：產生的字型檔案會較大，且雜訊較多。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">為什麼需要這份程式碼</h2>



<p>手寫筆記掃描成電腦檔案。墨水常常會暈開。筆畫黏在一起。畫面看起來很髒。這份程式碼可以自動修復。它能把黏住的字跡分開。清理多餘的碎點。讓黑白文字變得清晰。</p>



<h2 class="wp-block-heading">準備環境</h2>



<p>這段程式使用 Python 語言。你需要安裝兩個工具套件。打開終端機或命令提示字元。輸入下方指令安裝。</p>



<pre class="wp-block-code"><code>pip install opencv-python numpy</code></pre>



<h2 class="wp-block-heading">如何操作腳本</h2>



<p>你可以處理單張圖片。也可以處理整個資料夾。指令非常簡單。打開終端機。移動到檔案所在目錄。</p>



<p>處理單張圖片的範例。</p>



<pre class="wp-block-code"><code>python smooth_pattern.py -i test.jpg -o result.jpg
</code></pre>



<p>處理整個資料夾的範例。</p>



<pre class="wp-block-code"><code>python clean.py -i ./my_notes
</code></pre>



<p>如果沒有指定 output 路徑。程式會自動建立一個加上 &#8220;_clean&#8221; 字樣的資料夾。</p>



<h2 class="wp-block-heading">程式處理邏輯</h2>



<p>這份工具包含幾個重要步驟。首先將圖片轉為二值化。也就是純黑與純白。接著執行減少暈染。利用形態學運算切斷微小的連結。這對分離筆畫很有效。</p>



<p>程式定義了一些特定的像素樣式。會自動比對並替換雜訊。最後進行平滑化處理。先將圖片放大再縮小。利用中值濾波去除鋸齒。讓邊緣看起來更自然。</p>



<h2 class="wp-block-heading">建議</h2>



<p>對於學習 OpenCV 的初學者。這是一個很好的練習案例。可以觀察不同矩陣運算對圖片的影響。</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>將圖片轉換為二進制灰度模式</title>
		<link>https://codereview.max-everyday.com/binary_images/</link>
		
		<dc:creator><![CDATA[max-code-review-usr1]]></dc:creator>
		<pubDate>Mon, 31 Mar 2025 08:16:57 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[字體]]></category>
		<category><![CDATA[image]]></category>
		<guid isPermaLink="false">https://codereview.max-everyday.com/?p=1933</guid>

					<description><![CDATA[字型最終的推論, 是用 binary 來決定 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>字型最終的推論, 是用 binary 來決定, 雖然圖片的color space 格式已經是灰階, 但是透過繪圖軟體修改時, 預設還在 gray, 編輯的結果並不是最終結果的 binary, 為避免肉眼的誤判, 每次存檔去變成 binary 又太浪費時間, 改用 script 來完成,就很方便, 又省時間.</p>



<h2 class="wp-block-heading">為什麼要學這個？</h2>



<p>將圖片轉換為二進制灰度模式在許多應用中都非常有用，例如：</p>



<ul class="wp-block-list">
<li><strong>文字辨識 (OCR)：</strong> 許多 OCR 引擎在處理二進制圖片時，效果更好。</li>



<li><strong>影像分析：</strong> 二進制圖片可以簡化影像分析，例如形狀檢測、邊緣檢測等。</li>



<li><strong>列印或顯示：</strong> 在某些情況下，二進制圖片更適合列印或在特定顯示器上顯示。</li>



<li><strong>壓縮：</strong> 二進制圖片通常比灰度或彩色圖片更小，有助於節省儲存空間。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">使用方法</h2>



<ul class="wp-block-list">
<li>Max腳本檔案下載：<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/binary_images.py">https://github.com/max32002/MaxFontScripts/blob/master/binary_images.py</a></li>
</ul>



<p>在終端機或命令提示字元中執行以下命令：</p>



<pre class="wp-block-code"><code>python binary_images.py &lt;輸入目錄> &#91;--output_dir &lt;輸出目錄>] &#91;--threshold &lt;閾值>] &#91;--antialiasing &lt;反鋸齒強度>]</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">參數說明</h2>



<ul class="wp-block-list">
<li><code>&lt;輸入目錄></code>：要轉換圖片的目錄路徑。</li>



<li><code>--output_dir &lt;輸出目錄></code>：轉換後圖片的輸出目錄路徑。如果未提供，則原始圖片將被覆蓋。</li>



<li><code>--threshold &lt;閾值></code>：二值化的閾值，預設值為 127。</li>



<li><code>--antialiasing &lt;反鋸齒強度></code>：反鋸齒處理的強度，預設值為 0（不套用）。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">使用範例</h2>



<ul class="wp-block-list">
<li><strong>範例 1：</strong> 將 <code>images</code> 目錄中的所有圖片轉換為二進制灰度模式，並覆蓋原始檔案：</li>
</ul>



<p><code>python binary_images.py images</code></p>



<ul class="wp-block-list">
<li><strong>範例 2：</strong> 將 <code>images</code> 目錄中的所有圖片轉換為二進制灰度模式，並將轉換後的圖片儲存到 <code>binary_gray_images</code> 目錄中：</li>
</ul>



<p><code>python binary_images.py images --output_dir binary_gray_images</code></p>



<ul class="wp-block-list">
<li><strong>範例 3：</strong> 將 <code>images</code> 目錄中的所有圖片轉換為二進制灰度模式，並使用閾值 150 進行二值化：</li>
</ul>



<p><code>python binary_images.py images --threshold 150</code></p>



<ul class="wp-block-list">
<li><strong>範例 4：</strong> 將 <code>images</code> 目錄中的所有圖片轉換為二進制灰度模式，並套用強度為 3 的反鋸齒處理：</li>
</ul>



<p><code>python binary_images.py images --antialiasing 3</code></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">注意事項</h2>



<ul class="wp-block-list">
<li>請確保已安裝 OpenCV 函式庫（<code>pip install opencv-python</code>）。</li>



<li>反鋸齒強度值越大，模糊效果越強，但同時也會導致圖片細節損失。</li>
</ul>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>裁剪左右對應的圖片</title>
		<link>https://codereview.max-everyday.com/crop_images/</link>
		
		<dc:creator><![CDATA[max-code-review-usr1]]></dc:creator>
		<pubDate>Tue, 25 Mar 2025 05:16:41 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[字體]]></category>
		<category><![CDATA[Font]]></category>
		<category><![CDATA[image]]></category>
		<guid isPermaLink="false">https://codereview.max-everyday.com/?p=1920</guid>

					<description><![CDATA[透過 font_image_combiner [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>透過 <a href="https://codereview.max-everyday.com/font_image_combiner/">font_image_combiner.py</a> 做對應圖, 想取得對應圖修改過的半邊圖片, 就可以透過這一個腳本.</p>



<p><strong>為什麼要學這個？</strong></p>



<p>在許多影像處理應用中，我們經常需要處理左右對應的圖片，例如：</p>



<ul class="wp-block-list">
<li><strong>立體視覺：</strong> 透過左右兩張圖片，可以模擬人眼的立體視覺效果。</li>



<li><strong>影像拼接：</strong> 將左右兩張圖片拼接成一張全景圖。</li>



<li><strong>影像分析：</strong> 分別分析左右兩張圖片，以提取不同的特徵。</li>



<li><strong>資料預處理：</strong> 在機器學習或深度學習的影像相關任務中，有時需要對資料集裡的圖片做裁切，以符合模型訓練所需的格式。</li>
</ul>



<p>這個 Python 腳本可以幫助您快速、方便地裁剪左右對應的圖片，提高工作效率。</p>



<p><strong>使用方法</strong></p>



<ol class="wp-block-list">
<li><strong>安裝 Pillow 函式庫：</strong>
<ul class="wp-block-list">
<li>如果您的電腦尚未安裝 Pillow，請在終端機或命令提示字元中執行以下命令： Bash<br><code>pip install Pillow</code></li>
</ul>
</li>



<li><strong>儲存 Python 腳本：</strong>
<ul class="wp-block-list">
<li>Max腳本檔案下載：<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/crop_images.py">https://github.com/max32002/MaxFontScripts/blob/master/crop_images.py</a></li>
</ul>
</li>



<li><strong>執行 Python 腳本：</strong>
<ul class="wp-block-list">
<li>在終端機或命令提示字元中，使用以下命令執行腳本： Bash<br><code>python crop_images.py --input &lt;輸入目錄路徑> --output &lt;輸出目錄路徑> --reverse</code></li>



<li>將 <code>&lt;輸入目錄路徑></code> 替換為包含左右對應圖片的目錄路徑。</li>



<li>將 <code>&lt;輸出目錄路徑></code> 替換為您想要儲存裁剪後圖片的目錄路徑。如果省略 <code>--output</code>，則預設會使用 <code>cropped_images</code> 目錄。</li>



<li>如果想要裁剪右半邊的圖片，請加上 <code>--reverse</code> 選項。</li>
</ul>
</li>
</ol>



<p><strong>參數說明</strong></p>



<ul class="wp-block-list">
<li><code>--input</code>：
<ul class="wp-block-list">
<li>必要參數。</li>



<li>指定輸入圖片目錄的路徑。</li>
</ul>
</li>



<li><code>--output</code>：
<ul class="wp-block-list">
<li>選擇性參數。</li>



<li>指定輸出目錄的路徑。</li>



<li>預設值為 <code>cropped_images</code>。</li>
</ul>
</li>



<li><code>--reverse</code>：
<ul class="wp-block-list">
<li>選擇性參數。</li>



<li>如果指定此參數，則裁剪右半邊的圖片。</li>



<li>如果未指定此參數，則裁剪左半邊的圖片。</li>
</ul>
</li>
</ul>



<p><strong>使用範例</strong></p>



<p>假設您的圖片目錄為 <code>input_images</code>，其中包含以下兩個圖片檔案：</p>



<ul class="wp-block-list">
<li><code>left.jpg</code></li>



<li><code>right.jpg</code></li>
</ul>



<p>您想要將 <code>left.jpg</code> 的左半邊裁剪出來，並儲存到 <code>left_cropped</code> 目錄，您可以執行以下命令：</p>



<p>Bash</p>



<pre class="wp-block-code"><code>python crop_images.py --input input_images --output left_cropped
</code></pre>



<p>您想要將 <code>right.jpg</code> 的右半邊裁剪出來，並儲存到 <code>right_cropped</code> 目錄，您可以執行以下命令：</p>



<p>Bash</p>



<pre class="wp-block-code"><code>python crop_images.py --input input_images --output right_cropped --reverse
</code></pre>



<p>透過這些範例，您可以更了解如何使用此腳本來裁剪左右對應的圖片。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>生成字元圖像</title>
		<link>https://codereview.max-everyday.com/generate_glyphs/</link>
		
		<dc:creator><![CDATA[max-code-review-usr1]]></dc:creator>
		<pubDate>Mon, 24 Mar 2025 14:03:07 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[字串處理]]></category>
		<category><![CDATA[字體]]></category>
		<category><![CDATA[Font]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[String]]></category>
		<guid isPermaLink="false">https://codereview.max-everyday.com/?p=1916</guid>

					<description><![CDATA[好的，這是一篇關於使用 Python 腳本生 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>好的，這是一篇關於使用 Python 腳本生成字元圖像的教學文章：</p>



<p><strong>為什麼要學這個？</strong></p>



<p>在許多情況下，我們需要將字元轉換為圖像，例如：</p>



<ul class="wp-block-list">
<li><strong>生成字型圖集：</strong> 用於遊戲開發、網頁設計或圖形設計。</li>



<li><strong>建立訓練資料集：</strong> 用於機器學習中的字元辨識。</li>



<li><strong>產生藝術字體：</strong> 創造獨特的字體效果。</li>



<li><strong>驗證碼產生:</strong> 產生驗證碼圖片。</li>
</ul>



<p>這個 Python 腳本提供了一個方便的方法，可以根據指定的字型、大小和樣式，快速生成字元圖像。</p>



<p><strong>使用方法</strong></p>



<ul class="wp-block-list">
<li><strong>安裝 Python 和 opencv, freetype：</strong></li>
</ul>



<pre class="wp-block-code"><code>pip install opencv-python numpy freetype-py </code></pre>



<p>安裝 opencv 與 freetype 圖像處理庫。</p>



<ul class="wp-block-list">
<li><strong>準備字型檔案：</strong>
<ul class="wp-block-list">
<li>將您要使用的字型檔案（例如 <code>.ttf</code> 或 <code>.otf</code>）放在一個容易存取的位置。</li>
</ul>
</li>



<li><strong>執行腳本：</strong>
<ul class="wp-block-list">
<li>將腳本儲存為一個 <code>.py</code> 檔案（例如 <code>generate_glyphs.py</code>）。腳本傳送門:<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/generate_glyphs.py">https://github.com/max32002/MaxFontScripts/blob/master/<code>generate_glyphs</code>.py</a></li>



<li>在命令列或終端機中，使用 </li>
</ul>
</li>
</ul>



<pre class="wp-block-code"><code>python generate_glyphs.py &#91;參數] </code></pre>



<p></p>



<p><strong>參數說明</strong></p>



<ul class="wp-block-list">
<li><code>--keyword</code>：
<ul class="wp-block-list">
<li>要生成的字串。</li>



<li>預設值為空字串。</li>
</ul>
</li>



<li><code>--font</code>：
<ul class="wp-block-list">
<li>字型檔案的路徑。</li>



<li>必要參數。</li>
</ul>
</li>



<li><code>--font_size</code>：
<ul class="wp-block-list">
<li>字型大小。</li>



<li>預設值為 256。</li>
</ul>
</li>



<li><code>--canvas_size</code>：
<ul class="wp-block-list">
<li>圖布大小（邊長）。</li>



<li>預設值為 256。</li>
</ul>
</li>



<li><code>--output_dir</code>：
<ul class="wp-block-list">
<li>輸出目錄。</li>



<li>預設值為 <code>glyph_image</code>。</li>
</ul>
</li>



<li><code>--filename_rule</code>：
<ul class="wp-block-list">
<li>檔案名稱規則。</li>



<li>可選值：<code>seq</code>（序列號）、<code>char</code>（字元）、<code><strong>unicode_int</strong></code>（Unicode 整數）、<code>unicode_hex</code>（Unicode 十六進位）。</li>



<li>預設值為 <code><strong>unicode_int</strong></code>。</li>
</ul>
</li>



<li><code>-f</code> (也可以用 <code>--format</code> )：
<ul class="wp-block-list">
<li>副檔名</li>



<li>預設值為 <code>png</code>。</li>
</ul>
</li>



<li><code>--file</code>：
<ul class="wp-block-list">
<li>從文字檔案讀取字元。</li>



<li>可選參數。</li>
</ul>
</li>



<li><code>--x_offset</code>：
<ul class="wp-block-list">
<li>字型 X 軸偏移量，預設為 0。</li>
</ul>
</li>



<li><code>--y_offset</code>：
<ul class="wp-block-list">
<li>字型 Y 軸偏移量，預設為 0。</li>
</ul>
</li>



<li><code>--clear</code>：
<ul class="wp-block-list">
<li>清除輸出目錄中的所有檔案。</li>



<li>如果存在這個參數，在生成檔案前，會先清除 output_dir 內的所有檔案。</li>
</ul>
</li>
</ul>



<p><strong>使用範例</strong></p>



<ul class="wp-block-list">
<li><strong>生成包含 &#8220;Hello&#8221; 字串的字元圖像：</strong></li>
</ul>



<pre class="wp-block-code"><code>python generate_glyphs.py --font font.ttf --keyword "Hello"</code></pre>



<ul class="wp-block-list">
<li><strong>從文字檔案讀取字元並生成圖像：</strong></li>
</ul>



<pre class="wp-block-code"><code>python generate_glyphs.py --font font.ttf --file characters.txt</code></pre>



<ul class="wp-block-list">
<li><strong>使用序列號作為檔案名稱，並設定字型大小和圖布大小：</strong></li>
</ul>



<pre class="wp-block-code"><code>python generate_glyphs.py --font font.ttf --keyword "ABC" --filename_rule seq --font_size 128 --canvas_size 128</code></pre>



<ul class="wp-block-list">
<li><strong>在生成檔案前，先清除 output_dir 內的所有檔案。</strong></li>
</ul>



<pre class="wp-block-code"><code>python generate_glyphs.py --font font.ttf --keyword "ABC" --clear</code></pre>



<p><strong>注意事項</strong></p>



<ul class="wp-block-list">
<li>請確保您提供的字型檔案路徑是正確的。</li>



<li>您可以根據需要調整參數，以獲得所需的圖像效果。</li>



<li>使用 <code>--clear</code> 參數會刪除整個輸出目錄及其中的所有檔案，請謹慎使用。</li>



<li>如果輸出目錄不存在，<code>--clear</code> 參數不會有任何作用。</li>
</ul>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>生成字型與圖像的對照表</title>
		<link>https://codereview.max-everyday.com/font_image_combiner/</link>
		
		<dc:creator><![CDATA[max-code-review-usr1]]></dc:creator>
		<pubDate>Fri, 21 Mar 2025 14:48:38 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[字體]]></category>
		<category><![CDATA[Font]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[String]]></category>
		<guid isPermaLink="false">https://codereview.max-everyday.com/?p=1886</guid>

					<description><![CDATA[想比對自己修改後的圖片與目標字型的對照表.  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>想比對自己修改後的圖片與目標字型的對照表.</p>



<p>這個 script 會把來源圖像跟目標字型渲染的字元圖像合併，然後做一些前處理，來產生可以用在機器學習或其他用途的圖像資料集。</p>



<h2 class="wp-block-heading">前置作業</h2>



<p>Max腳本檔案下載：<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/font_image_combiner.py">https://github.com/max32002/MaxFontScripts/blob/master/font_image_combiner.py</a></p>



<h2 class="wp-block-heading">環境設定</h2>



<ul class="wp-block-list">
<li>先確定你的電腦有裝 Python。</li>



<li>安裝需要的 Python 套件：</li>
</ul>



<pre class="wp-block-code"><code>pip install opencv-python numpy Pillow torchvision tqdm fonttools</code></pre>



<h3 class="wp-block-heading">Script 說明</h3>



<p>這個 script 主要有這些函式：</p>



<ul class="wp-block-list">
<li><code>draw_character</code>：把單個字元渲染成圖像。</li>



<li><code>convert_to_gray_binary</code>：把圖像轉成灰階二值圖像。</li>



<li><code>create_example_image</code>：把來源圖像跟目標字型圖像合併成範例。</li>



<li><code>filter_recurring_hashes</code>：過濾字型裡重複的雜湊值。</li>



<li><code>process_images</code>：處理圖像然後存成範例。</li>



<li><code>main</code>：主要函式，處理參數然後呼叫其他函式。</li>
</ul>



<h3 class="wp-block-heading">使用方法</h3>



<p>1. 把 script 存成 <code>font_image_combiner.py</code>。 <br>2. 準備好來源圖像的目錄跟目標字型檔案。 <br>3. 打開終端機或命令提示字元，執行這個指令：</p>



<pre class="wp-block-code"><code>python font_image_combiner.py path_of_source_images --font_path /path_of_font.ttf --output_dir /path_of_output_dir</code></pre>



<p>你可以根據需要調整這些參數：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code>path_of_source_images</code></td><td>來源圖像目錄路徑（一定要有）。<br><br><strong>副檔名, 限定 .png 格式</strong></td></tr><tr><td><code>--font_path</code></td><td>目標字型檔案路徑（一定要有）。</td></tr><tr><td><code>--output_dir</code></td><td>輸出目錄路徑（預設是 <code>output_dir</code>）。</td></tr><tr><td><code>--charset</code></td><td>字元集檔案路徑（一行一個字元）。<br><br>如果沒給，會從來源圖像目錄的檔案名稱推斷<br>字元集。<strong>建議不要設定 charset 內容值</strong>，會比較方便。</td></tr><tr><td><code>--canvas_size</code></td><td>畫布大小（預設是 256）。</td></tr><tr><td><code>--char_size</code></td><td>字元大小（預設是 256）。</td></tr><tr><td><code>--x_offset</code></td><td>目標字型 X 軸偏移量（預設是 0）。</td></tr><tr><td><code>--y_offset</code></td><td>目標字型 Y 軸偏移量（預設是 0）。</td></tr><tr><td><code>--disable_auto_fit</code></td><td>關掉圖像自動調整大小。</td></tr><tr><td><code>--reverse</code></td><td>反轉來源圖像跟目標字型圖像的位置。</td></tr><tr><td><code>--filename_rule</code></td><td>檔案名稱規則(預設是seq)。</td></tr><tr><td><code>--filename_prefix</code></td><td>檔案名稱前置字元。</td></tr><tr><td><code>--filter_hashes</code></td><td>過濾重複的雜湊值。</td></tr><tr><td><code>--shuffle</code></td><td>處理字元集之前先隨機排序。</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">範例</h3>



<ul class="wp-block-list">
<li>來源目錄名稱 ./glyph_image/ 目錄裡, 有一個檔名為: 23433.png 內容是: 安 </li>



<li>要使用的字型: ZenMaruGothic-Regular.ttf</li>



<li>要輸出的目錄: output_images</li>



<li>輸出的前置字元: font_example_</li>



<li>畫布大小: 128</li>



<li>字型大小: 128</li>
</ul>



<p>這是一個範例指令：</p>



<pre class="wp-block-code"><code>python font_image_combiner.py glyph_image --font_path ZenMaruGothic-Regular.ttf --output_dir output_images --filename_prefix="font_example_" --canvas_size=128 --char_size=128 --disable_auto_fit</code></pre>



<h3 class="wp-block-heading">注意事項</h3>



<ul class="wp-block-list">
<li>確定來源圖像目錄的圖像檔案名稱是字元的 Unicode 編碼（十進制）。</li>



<li>如果給了字元集檔案，確定檔案裡的每個字元都佔一行。</li>



<li>你可以根據需要調整圖像大小、偏移量和其他參數。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">相關文章</h2>



<p>zi2zi 沒有出現在訓練資料裡的符號, 要怎麼處理?<br><a href="https://stackoverflow.max-everyday.com/2025/02/zi2zi-unseen-data/">https://stackoverflow.max-everyday.com/2025/02/zi2zi-unseen-data/</a></p>



<p>透過 font_image_combiner.py 做對應圖, 想取得對應圖修改過的半邊圖片, 就可以透過: <br>裁剪左右對應的圖片<br><a href="https://codereview.max-everyday.com/crop_images/">https://codereview.max-everyday.com/crop_images/</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>縮放單張或某目錄下的圖片檔案</title>
		<link>https://codereview.max-everyday.com/resize_image/</link>
		
		<dc:creator><![CDATA[max-code-review-usr1]]></dc:creator>
		<pubDate>Thu, 13 Feb 2025 07:29:46 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[image]]></category>
		<guid isPermaLink="false">https://codereview.max-everyday.com/?p=1802</guid>

					<description><![CDATA[寫報告或做簡報常遇到圖片太大。上傳系統有限制 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>寫報告或做簡報常遇到圖片太大。上傳系統有限制。一張張開小畫家縮圖很浪費生命。寫程式解決最快。這一個小工具。可以縮放圖片大小。也能順便轉檔。</p>



<h2 class="wp-block-heading">前置作業</h2>



<p>Max腳本檔案下載：<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/resize_image.py">https://github.com/max32002/MaxFontScripts/blob/master/resize_image.py</a></p>



<p>電腦裡要有 Python 環境。這個腳本用到 Pillow 處理圖片。打開終端機或命令提示字元安裝套件。輸入這行指令。</p>



<pre class="wp-block-code"><code>pip install Pillow</code></pre>



<h2 class="wp-block-heading">使用方法</h2>



<pre class="wp-block-code"><code>python resize_image.py &#91;來源檔案或是資料夾] &#91;參數]</code></pre>



<ul class="wp-block-list">
<li>-w, 新圖片寬度</li>



<li>-e, 新圖片副檔名</li>
</ul>



<h2 class="wp-block-heading">單張圖片縮放</h2>



<p>有時候只需要改一張圖。假設圖檔叫 photo.jpg。想要把寬度改成 800 像素。高度程式會自己算比例。加上 -w 參數就好。</p>



<pre class="wp-block-code"><code>python resize_image.py photo.jpg -w 800
</code></pre>



<p>執行完會多一個檔名有 _resized 的新圖片。原本的圖片不會被蓋掉。比較安全。</p>



<h2 class="wp-block-heading">整個資料夾處理</h2>



<p>這功能最實用。出去玩拍了一堆照片要傳給朋友。或是要整理實驗數據圖。把所有照片放在一個叫 images 的資料夾。用下面指令一次全部縮小。</p>



<pre class="wp-block-code"><code>python resize_image.py ./images -w 1024 -o ./output_folder
</code></pre>



<p>這樣 images 裡面的圖都會變成寬度 1024。然後存到 output_folder 資料夾。省下非常多時間。</p>



<h2 class="wp-block-heading">轉換格式技巧</h2>



<p>有些系統不收 PNG。或是 PNG 太大想轉成 JPG。這個工具也能做。加上 -e 參數指定副檔名。</p>



<pre class="wp-block-code"><code>python resize_image.py icon.png -e jpg -w 500
</code></pre>



<p>程式會自動把透明背景處理掉。轉成白底的 JPG。</p>



<p></p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>從unicode命名的圖片目錄裡複製出指定的檔案</title>
		<link>https://codereview.max-everyday.com/copy_selected_image/</link>
		
		<dc:creator><![CDATA[max-code-review-usr1]]></dc:creator>
		<pubDate>Wed, 12 Feb 2025 08:19:15 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Font]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[String]]></category>
		<guid isPermaLink="false">https://codereview.max-everyday.com/?p=1793</guid>

					<description><![CDATA[這段程式碼是一個用來篩選字型圖片的小工具。  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>這段程式碼是一個用來篩選字型圖片的小工具。</p>



<p>有時候我們會下載一大堆以 Unicode 編碼命名的圖片檔案，但實際上只需要其中一部分。這個腳本可以幫你比對需要的文字，並從成千上萬的檔案中把目標圖片抓出來。</p>



<p>Max腳本檔案下載：<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/copy_selected_image.py">https://github.com/max32002/MaxFontScripts/blob/master/copy_selected_image.py</a></p>



<h2 class="wp-block-heading">基本原理</h2>



<p>這個腳本主要使用 Python 內建的函式庫。它會掃描你指定的資料夾，尋找檔名為數字的圖片檔。這些數字會被當作 Unicode 編碼。腳本會根據你提供的文字或範圍，計算出對應的編碼集合。最後它會把匹配成功的檔案複製到新的資料夾。</p>



<h2 class="wp-block-heading">使用方法與參數</h2>



<p>你需要先安裝 Python 環境。確保腳本存成 copy_selected_image.py 檔案。在終端機輸入指令就能執行。基本的語法結構很簡單。</p>



<pre class="wp-block-code"><code>python copy_selected_image.py &#91;輸入目錄] &#91;參數]</code></pre>



<p>[輸入目錄] 是必填的輸入目錄路徑。</p>



<p>[參數] 說明如下。</p>



<ul class="wp-block-list">
<li>&#8211;string, 或 -s, 指定想要的文字。</li>



<li>&#8211;file, 或 -f,  讀取文字檔內容。</li>



<li>如果你知道編碼範圍，可以使用 &#8211;range 輸入 16 進位數值。</li>



<li>程式預設會把結果存到名為 output 的資料夾, 可以用 &#8211;output, 或 -o 指定輸出目錄。</li>
</ul>



<h2 class="wp-block-heading">操作範例</h2>



<p>假設你的圖片都在 images 資料夾。如果你想挑出「你好」這兩個字的圖片，指令如下：</p>



<pre class="wp-block-code"><code>python copy_selected_image.py images --string 你好 --output result</code></pre>



<p>如果你需要挑選一段連續的 Unicode 範圍，例如 4E00 到 4E10，可以這樣寫：</p>



<pre class="wp-block-code"><code>python copy_font.py images --range 4E00-4E10</code></pre>



<p>執行後程式會顯示匹配到的總數，並自動建立目標資料夾存放檔案。</p>



<h2 class="wp-block-heading">注意事項</h2>



<p>檔案名稱必須是純數字。副檔名必須是常見的圖片格式。程式在複製時會檢查目標路徑。如果發生檔名衝突，它會印出警告訊息。這對於處理大量字圖資料非常方便。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">進階參數說明</h2>



<ul class="wp-block-list">
<li><code>--file</code>&nbsp;目的字串的文字檔。</li>



<li><code>--range</code> 目的字元的範圍, 使用16進制, 例如: &#8211;range AC00,D7AF</li>



<li><code>--range_int</code> 目的字元的範圍, 使用10進制.</li>
</ul>



<p>常見的 range</p>



<ul class="wp-block-list">
<li>2E80 &#8211; 2EFF: CJK Radicals Supplement</li>



<li>3400 – 4DBF: 中日韓統一表意文字擴充區A,</li>



<li>4E00 &#8211; 9FFF: CJK Unified Ideographs,</li>



<li>AC00 — D7AF: 諺文音節 (Hangul Syllables), Hangul音節是一個Unicode塊，其中包含用於現代韓語的預先編寫的Hangul音節塊。音節可以通過算法直接映射到韓文字母Unicode塊中的兩個或三個字符的序列： U + 1100–U + 1112之一：19個現代韓文字母領先的輔音字母； U + 1161–U + 1175之一：21種現代韓文元音字母；</li>



<li>F900 &#8211; FAFF: CJK Compatibility Ideographs</li>



<li>20000 – 2A6DF: 中日韓統一表意文字擴充區B</li>



<li>30000 – 3134F: 中日韓統一表意文字擴展區G</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">相關文章：</h2>



<ul class="wp-block-list">
<li>從字體專案裡取得特定文字glyph<br><a href="https://codereview.max-everyday.com/get-selected-glyph-from-font/">https://codereview.max-everyday.com/get-selected-glyph-from-font/</a></li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>使用繪圖軟體修改字型檔</title>
		<link>https://codereview.max-everyday.com/modify-font-by-photo-editor/</link>
		
		<dc:creator><![CDATA[max-code-review-usr1]]></dc:creator>
		<pubDate>Fri, 06 Aug 2021 20:44:57 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Font]]></category>
		<category><![CDATA[FontForge]]></category>
		<category><![CDATA[image]]></category>
		<guid isPermaLink="false">https://codereview.max-everyday.com/?p=1516</guid>

					<description><![CDATA[字體工具的編輯界面，如果不太熟悉，想透過繪圖 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="793" src="https://codereview.max-everyday.com/wp-content/uploads/2021/08/modify-font-by-photo-editor-cover-1024x793.jpg" alt="" class="wp-image-1519"/></figure>



<p>字體工具的編輯界面，如果不太熟悉，想透過繪圖軟體來修改字型，你可以這麼做：</p>



<ul class="wp-block-list"><li>Step 1: 在字體工具，匯出該文字，為 .bmp格式。</li><li>Step 2: 使用繪圖軟體編輯。</li><li>Step 3: 轉換 .bmp 為 .svg 格式。（使用potrace外部指令）</li><li>Step 4: 在字體工具，匯出.svg 格式。</li></ul>



<p>只要這4個步驟就完成了。</p>



<p>如果你也和我一樣缺乏美感，對筆劃們的位置與長度無法拿捏，請參考看看，如何讓AI輔助我們造字：</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>AI造字經驗分享<br><a href="https://max-everyday.com/2021/07/zi2zi-ai-font/">https://max-everyday.com/2021/07/zi2zi-ai-font/</a></p></blockquote>



<hr class="wp-block-separator"/>



<p>大波浪圓體補字：旎旖曆步歲歷溼煞 <br><a href="https://youtu.be/KK9PA9Gp4tg">https://youtu.be/KK9PA9Gp4tg</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="大波浪圓體補字：旎旖曆步歲歷溼煞" width="1170" height="658" src="https://www.youtube.com/embed/KK9PA9Gp4tg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p>大波浪圓體補字：妳<br><a href="https://youtu.be/rzNh6eOfYts">https://youtu.be/rzNh6eOfYts</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="大波浪圓體補字：妳" width="1170" height="658" src="https://www.youtube.com/embed/rzNh6eOfYts?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<hr class="wp-block-separator"/>



<p>大波浪圓體補字：口部<br><a href="https://youtu.be/eMLZxgJWzrk">https://youtu.be/eMLZxgJWzrk</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="大波浪圓體補字：口部" width="1170" height="658" src="https://www.youtube.com/embed/eMLZxgJWzrk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<hr class="wp-block-separator"/>



<p>大波浪圓體補字：摠聰總傯<br><a href="https://youtu.be/gTbc1A4TQUQ">https://youtu.be/gTbc1A4TQUQ</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="大波浪圓體補字：摠聰總傯" width="1170" height="878" src="https://www.youtube.com/embed/gTbc1A4TQUQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">相關文章</h2>



<ul class="wp-block-list"><li>以描摹方式建立或更新字型<br><a href="https://codereview.max-everyday.com/create-new-font-by-draw/">https://codereview.max-everyday.com/create-new-font-by-draw/</a></li><li>向量檔匯入字體檔<br><a href="https://codereview.max-everyday.com/import-svg-to-font/">https://codereview.max-everyday.com/import-svg-to-font/</a></li><li>使用貝茲曲線與向量圖層<br><a href="https://krita.max-everyday.com/bezier-curve-vector-layer/">https://krita.max-everyday.com/bezier-curve-vector-layer/</a></li></ul>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
