2016-03-30 14 views
0

ビットマップパターンにデータをエンコードし、Piet言語のようにイメージをデータにデコードするライブラリがPythonにはありますか?Pythonを使用してイメージに文字列をエンコードする

のHello Worldは、ピエト

Hello World with Piet

UPDATEと

は、私はその後、こんにちは、世界またはURLのように、文字列を取得し、画像としてそれをエンコードしたいですこのイメージを読んで、文字列にデコードします。 QRコードのようなものですが、ビットマップを使用しています。

+0

は、なぜあなたはこのスレッドをクローズしようとしていますか? – bodruk

+0

Piet言語は画像内にデータをエンコードしません。 Pietプログラムのソースコードはイメージであり、PietインタプリタはPietソースイメージを実行できます。 –

+1

私の近い投票の理由は、 "あなたが求めているものは不明"だったでしょう。この質問は不明です。とにかく@jsbuenoが勇敢な試みをするのを止めたわけではありません。 –

答えて

0

image manipulationまたはimage processingの計画によっては、Python Image Library PILがお探しのものになる場合があります。以下は

PIL

デモコード

from PIL import Image 
from PIL import ImageFilter 

i = Image.open("gImage1.jpg") 
im2 = i.filter(ImageFilter.EMBOSS) 
im3 = i.filter(ImageFilter.FIND_EDGES) 

im2.save("gImage1_EMBOSS.jpg") 
im3.save("gImage1_FIND_EDGES.jpg") 

入力画像内で利用可能な他の多数の画像処理とピクセル操作ツールがありますhere 由来作り付けのフィルタを適用するデモコードであり、

Input Image

出力画像
EMBOSS Filter

FIND EDGES FILTER

+0

イメージをロードしたりフィルタを適用したりすると、実際にOP質問がどのように表示されますか? – jsbueno

1

画像として使用するときのデータの表示方法の指定が必要です。 これは、エンコードを行う既存のコードよりもはるかに重要です。

Piet Languageの場合、まさにこれが起こります。これが「言語仕様」です。そこから、人々はitnerpretersとツール(Python interpreterを含む他の様々な言語で)を構築しました。

しかし、画像に任意のデータをエンコードし、それを元に戻したい場合は、最初にどのようにエンコードする必要があるのか​​を伝える必要があります。最も簡単な方法は、データの各バイトが1ピクセルのカラーチャネルであり、エンコードされたデータの正確な長さを決定し、一番下のイメージ行をパディングする方法です。

これは、Python Imaging Library(Pillow)のImage.frombytesメソッドでは簡単ですが、イメージは喜ばしくありません。

また、任意のデータを与えられた入力データを単に "流出させる" PietプログラムをコンパイルするためのPythonプログラムを構築することもできます。上記のpietインタプリタはデータをデコードできます。

この例では、データ長にあらかじめ4バイト、黒で下のピクセルをパディングしている、カラフルな画像として.wavサウンドファイル(これはPythonコンソールでこれを行いました)をパックします。

import struct 
from PIL import Image 
data = open("2600PacManDies.wav", "rb").read() 
size = struct.pack("<I", len(data)) 
image_side = int(((len(data) + len(size))/3.0) ** 0.5) + 1 
img = Image.frombytes("RGB", (image_side, image_side) , size + data + b"\x00" * (image_side ** 2 * 3 - (len(size) + len(data)) )) 
img.save("2600_pacman_dies.png") 

enter image description here

(私は生のサウンドデータファイルを使用してきたように、1にも画像を見たデータで、いくつかのパターンを発見することができますが - 最も明白なもの静かな瞬間を意味するブラックストライプを)

+0

質問を編集しました。 – bodruk

+0

はい、それでもなお、他の答えはあなたが実際に尋ねていることに触れていませんが、私はそれに答えようとします。 – jsbueno

関連する問題