.jpg -> .wav -> .mp3 -> .wav ->.jpg
流れ
画像を音に変換する。その音をmp3に変換、再度、音から画像に戻す。
.wmaは.mp3とほとんど同じ。
.oggは元の画像と変化なし
#!/usr/bin/env python #coding:utf-8 import Image, wave, subprocess input_file = "diana.jpg" output_file = "diana_out.jpg" img = Image.open(input_file) raw_data = img.tostring() # 生データを引き抜く wav = wave.open("dianaXXXX.wav", "wb") # モノラル、16ビット、サンプリングレートの設定 wav.setnchannels(1) wav.setsampwidth(2) wav.setframerate(44100) # 画像の生データを音にぶっこむ wav.writeframesraw(raw_data) wav.close() # 外部のffmpegで.wavを.mp3に変換し、もう一度.wavに戻す subprocess.call(['ffmpeg', '-i', 'dianaXXXX.wav', '-ab', '64', '-ar', '44100', 'dianaXXXX.mp3'], shell=False) subprocess.call(['ffmpeg', '-i', 'dianaXXXX.mp3', 'dianaXXXX.wav'], shell=False) wave2 = wave.open("dianaXXXX.wav", "rb") # 音の生データを引き抜く raw_data2 = wave2.readframes(wave2.getnframes()) # 音の生データを画像にぶっこむ im2 = Image.fromstring("RGB", img.size, raw_data2) im2.save(output_file)
アウトロ
少し前に画像を音にしてスピーカーから出力し、マイクで再度拾って画像にフィルタを掛けるというのをやった。それの応用で、mp3に変換し可聴周波数以外が切り取られることで、聞く限界がもたらす画像フィルタとかです多分。
映像にも以上の操作をしてみたのだが、元の映像の画質も悪いせいかノイズまみれで汚かったので今回はパス。気が向いたらそのうち。