1Dバーコードの規格「Code 39」では、
数字の文字とアルファベットを扱えるそうですが、
画像にする際の元の文字列としては
何文字、あるいは何桁まで扱えるのでしょうか?
↓
`python-barcode` における
**Code 39**(`code39`) の文字列の長さに関する仕様は
以下の通りです。
### **Code 39 の文字数制限**
- **理論上の制限**:`
python-barcode` には
Code 39 の最大文字数に関する明確な制限はありません。
- **実用上の制限**:
- 画像サイズの問題により、
あまりにも長いバーコードは適切にレンダリングできない可能性があります。
- 読み取り精度の観点から、
一般的に **20~25文字程度** が実用的な上限とされることが多いです。
### **扱える文字**
- **英大文字** (`A-Z`)
- **数字** (`0-9`)
- **特殊記号**:`-`, `.`, `space`, `*`, `$`, `/`, `+`, `%`
### **長いバーコードを生成する際の注意**
1. **解像度を上げる**
- `python-barcode` の `ImageWriter` を使って
`dpi` を上げることで、長い文字列でも読み取り可能な画像を生成できます。
- 例: `options={"dpi": 300}` を指定する。
2. **バーの幅を広くする**
- `module_width` を大きくすると、長い文字列でも認識しやすくなります。
### **Python で Code 39 を生成する例**
```python
import barcode
from barcode.writer import ImageWriter
# Code 39 で長いバーコードを作成
code39 = barcode.get(
'code39', 'HELLO-123456-TESTCODE', writer=ImageWriter())
# 画像として保存 (DPIを上げて長いバーコードをきれいに表示)
filename = code39.save(
'code39_barcode', options={"dpi": 300, "module_width": 0.5})
```
### **まとめ**
- `python-barcode` では
**Code 39 の文字数制限は理論上なし**
(ただし画像サイズの影響あり)。
- **実用的には 20~25文字程度まで** が望ましい。
- 画像の DPI を上げたり、バーの幅を広くすることで、
長いコードの読み取りを改善できる。
長い文字列を使いたい場合は、
上記の工夫を試すと良いでしょう。
コメント
コメントを投稿