2017-06-04 6 views
1

私はこのイメージを持っている:私はこれを試した画像のpython - フォント画像における座標に文字列

上の座標に「アスカール」:

text = "Açúcar" 

strcoord = [] 
for char in text: 
    code = ord(char) 
    y = code//16 
    x = code%16 
    strcoord += [[x,y]] 

print(strcoord) 
font image

私は次のように文字列を変換したいです

、結果は次のとおり

[1、4]、[7]、[14]、[10、15]、[3,6]、[1,6]、[2 、7]]

アクセントの座標は間違っていますか?

これを行うには速い方法がありますか?

答えて

0

イメージマップの文字の順序がユニコード文字の値の順序と一致しません。'Basic Latin' and 'Latin 1 Supplement'コードページを参照してください。 ord()関数はその順序を使用します。

あなたのイメージマップは古いIBM 437マッピングを使用しています。次の変更を試して、イメージマップで使用する文字を正しい整数に変換することができます。

text = "Açúcar" 

strcoord = [] 
for char in text: 
    code = int(char.encode('ibm437')[0]) 
    y = code//16 
    x = code%16 
    strcoord += [[x,y]] 

print(strcoord) 

encode関数は、0番目の位置に必要な整数を持つバイト配列を返します。

この結果、[[1, 4], [7, 8], [3, 10], [3, 6], [1, 6], [2, 7]]が見つかりました。これはあなたが探している座標です。

関連する問題