Any suggestions on how to "onion skinning"?
Mark Smith
mark at maseurope.net
Wed Nov 28 22:32:41 EST 2007
This is sort of interesting:
if you simply take one of the color bytes of each pixel, and copy it
to the other two color bytes, you get a gray-scale result. The
brightness/contrast varies with which color you choose. For the few
images I've tried, it seems to be red =brighter/less contrast to
blue= darker/more contrast. This may be no surprise to the pro image
wranglers among us, but seemed intriguing to me.
function MakeGS @indata ---- the imageData of the source image
repeat with n = 1 to length(inData) - 3 step 4
get char n+3 of inData ---- blue byte, 1 for red, 2 for green
put null & it & it & it after outData
end repeat
return outData
end MakeGS
and it runs perhaps twice as fast as taking an average.
Best,
Mark
On 28 Nov 2007, at 23:06, Ian Wood wrote:
>
> On 28 Nov 2007, at 21:24, Chipp Walters wrote:
>
>> Or, you could probably do it really fast with an optimized imagedata
>> script where you average the values of each pixel and reapply. I
>> would
>> think that would zip right along.
>
> I managed to find a function from March last year from a discussion
> about making alphadata from images.
> Originally written by Wilhelm Sanke, with a few tweaks by me to
> make it universal for any image size.
>
> Pass it the long ID of an image and it will return a one-channel
> image suitable for a mask.
>
> On 13 Mar 2006, at 20:51, Ian Wood wrote:
>> function makeMask tMaskImg
>> set the cursor to watch
>> put width of tMaskImg into tW
>> put height of tMaskImg into tH
>> put the milliseconds into Start
>> put the imageData of tMaskImg into iData
>> put empty into tmaskdata
>> put tW * 4 into re
>> repeat with i = 0 to (tH - 1)
>> repeat with j = 0 to (tW - 1)
>> put chartonum(char (i*re + (j*4+2)) of idata) into tC1
>> put chartonum(char (i*re + (j*4+3)) of idata) into tC2
>> put chartonum(char (i*re + (j*4+4)) of idata) into tC3
>> put the round of ((tc1 + tc2 + tc3)/3) into tM
>> put numToChar(tM) after tMaskData
>> end repeat
>> end repeat
>> return tMaskData
>> end makeMask
>
> Add another tweak to put it back into RGB:
>
> function makeMask tMaskImg
> set the cursor to watch
> put width of tMaskImg into tW
> put height of tMaskImg into tH
> put the milliseconds into Start
> put the imageData of tMaskImg into iData
> put empty into tmaskdata
> put tW * 4 into re
> repeat with i = 0 to (tH - 1)
> repeat with j = 0 to (tW - 1)
> put chartonum(char (i*re + (j*4+2)) of idata) into tC1
> put chartonum(char (i*re + (j*4+3)) of idata) into tC2
> put chartonum(char (i*re + (j*4+4)) of idata) into tC3
> put the round of ((tc1 + tc2 + tc3)/3) into tM
> put numToChar(tM) into tPix
> put tPix & tPix & tPix & tPix after tMaskData
> end repeat
> end repeat
> return tMaskData
> end makeMask
>
> And you can do something like:
>
> put makeMask(long id of img 1) into tData
> set the imagedata of img 1 to tData
>
> to turn the specified image into greyscale. Takes about a second
> for a 640x480px image on a MBP 2GHz Core Duo, so not too speedy.
>
> Ian
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
More information about the use-livecode
mailing list