This was done after reading about Aphex Twin placing images in his music this way, and I thought software to do this task should not be difficult to write, given access to suitable image handling and Fourier transform libraries.
The program was developed with Python 1.5.2 on RedHat Linux 7.3. It
should work on any system the Python language runs on, although the
.wav output stuff has not been checked for endian issues.
Update: 17/10/2004 : After
this project sitting idle for ages I have just tweaked it so it works
with newer Python and Python Imaging Library.
Update: 16/6/2014 :
Source code now placed in GITHUB
apt-get install python-imaging
Example input image, in this case Jintara Punlarp, superstar of the Mor Lam music from northern Thailand.
Run the command:
image2wav.py jintara.pngwhich will create the .wav file jintara.png.wav.
If we get the spectrogram of this audio file, using the spectromatic program in this case:
spectromatic --step 1024 --logarithmic --window 1024 --inverse jintara.png.wavProduces the the following output spectrogram (the commandline parameters were selected to give a good aspect ratio):
lame jintara.png.wav LAME version 3.96 MMX (http://www.mp3dev.org/)
CPU features: MMX (ASM used), 3DNow! (ASM used), SSE
Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz
Encoding jintara.png.wav to jintara.png.wav.mp3
Encoding as 44.1 kHz 64 kbps single-ch MPEG-1 Layer III (11x) qval=3
Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
371/373 (99%)| 0:00/ 0:00| 0:00/ 0:00| 13.650x| 0:00
average: 64.0 kbps
Writing LAME Tag...done
spectromatic --step 1024 --logarithmic --window 1024 --inverse jintara.png.wav
samples = 428032, step_size = 1024, window_size = 1024