Page 1 of 1
image processing
Posted: Sun Jul 25, 2010 9:33 am
by 0x69
Hi,
I want to manipulate individual pixels of image - is it possible in newLISP ?
That is, I want to get RGB values of each pixel and change these values by my needs.
[If such functionality isn't there - maybe newLISP can be extended to support that ? If so - when ? :) ]
Thanks for answer.
Re: image processing
Posted: Sun Jul 25, 2010 1:09 pm
by 0x69
As for now -I found workarround - read,modify & save PPM image file. It's trivial to work with
PPM images, because format is very simple, kinda-
Code: Select all
P3
# The P3 means colors are in ASCII, then 3 x 2 image size, then 255 for max color, then RGB triplets
3 2
255
255 0 0 0 255 0 0 0 255
255 255 0 255 255 255 0 0 0
Happy image processing !
Re: image processing
Posted: Sun Jul 25, 2010 5:03 pm
by cormullion
I don't think you can do it newLISP-GS.
You can (sort of) do it with HTML5 canvas, although this involves so much intermediate JavaScript as to be depressingly slow. The relevant bits of the code I hacked together are:
Code: Select all
(write-buffer page [text]
<script type="text/javascript" language="javascript" charset="utf-8">
var a_canvas = document.getElementById("a");
var a_context = a_canvas.getContext("2d");
var input = a_context.getImageData(0, 0, a_canvas.width, a_canvas.height);
var output = a_context.createImageData(a_canvas.width, a_canvas.height);
var w = input.width, h = input.height;
var inputData = input.data;
var oD = output.data;
[/text])
; set pixel c to colour (where colour is RGB list eg (0 0 0)):
(write-buffer page
(string
"oD[" c "] = " (first colour) ";\n"
"oD[" (+ c 1) "] = " (colour 1) ";\n"
"oD[" (+ c 2) "] = " (colour 2) ";\n"
"oD[" (+ c 3) "] = " 200 ";\n")
; and to output the array
(write-buffer page {
a_context.putImageData(output, 0, 0);
})
Have you seen
onographic - here's my Mandelbrot attempt
http://www.dmemos.de/onographic/contributions.htm with a version of didi's code. (I used a PPM to PNG converter, since PPM files aren't that useful...)