|
Author |
Topic: pixels[] doubt (Read 3057 times) |
|
Dimitre
|
pixels[] doubt
« on: Nov 14th, 2002, 8:03pm » |
|
Hello! I have a doubt about mixing color numbers. I am working with the built-in pixels[] array and another (pixels2[]) that I created. Do you a way to "add" one to another, creating Multiply effect? pixels[] Multiply pixels2[]
|
|
|
|
fry
|
Re: pixels[] doubt
« Reply #1 on: Nov 15th, 2002, 1:24am » |
|
there isn't a way to do this for free.. you'll just have to iterate over the pixel array, unpack the r/g/b components with some bit-shifting, then add, then re-pack. and please follor up if you 1) don't know what i mean and need an example or 2) write the example for yourself, so you can share it with the rest of us.
|
|
|
|
Dimitre
|
Re: pixels[] doubt
« Reply #2 on: Nov 18th, 2002, 9:37pm » |
|
Thanks fry. This worked fine for me: Code:red = pixels2[index] >> 16; green = (pixels2[index] - (red << 16)) >> 8; blue = pixels2[index] - (green << 8) - (red << 16); |
| I also found this blending modes reference, very interesting to play with it: http://pegtop.net/delphi/blendmodes/
|
« Last Edit: Nov 18th, 2002, 10:19pm by Dimitre » |
|
|
|
|
fry
|
Re: pixels[] doubt
« Reply #3 on: Nov 18th, 2002, 11:16pm » |
|
that's a great reference. thanks for posting the link. the following code may be more straightforward/correct (faster in the case of the blue component) for unpacking numbers. Code:red = (pixels2[index] >> 16) & 0xff; green = (pixels2[index] >> 8) & 0xff; blue = pixels2[index] & 0xff; |
| some explanation, for the folks that might not know about this stuff... Code:the bits in a pixel look like this: AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB (where A is alpha, R is red.. etc) so when you shift the red 16 to the right (>> 16 above) then the pixel looks like this: 0000000000000000AAAAAAAARRRRRRRR and you use the & 0xff to hack off the other bits, and just save the 8 bits that you need for the color component itself. 0xff is 8 bits, all set to 1. so: 0000000000000000AAAAAAAARRRRRRRR "and" 00000000000000000000000011111111 will be 000000000000000000000000RRRRRRRR because the "and" operation only lets through the bits that are set in both numbers. |
| (sorry for the tiny monospaced font, but the text makes more sense in mono so the letters line up) [ ANOTHER METHOD, for the beginners, or those more obsessed with clarity than speed ] for those who don't need the speed of using ints and unpacking things like this, you can use something like: Code:color pixel = getPixel(4, 5); float r = red(pixel); float g = green(pixel); float b = blue(pixel); |
| the numbers for r, g, b will be scaled to the current colorMode. i.e. if you're using colorMode(RGB, 1), all the numbers will be between 0..1. useful for sane, simpler coding, but a bit slower because of the extra work to turn the colors into something more like the current color mode.
|
« Last Edit: Nov 18th, 2002, 11:18pm by fry » |
|
|
|
|
Dimitre
|
Re: pixels[] doubt
« Reply #4 on: Nov 19th, 2002, 5:45pm » |
|
Thanks fry! very fine the "& 0xff" use. I updated my code and put one multiply mode experiment at http://dmtr.org/generative. Soon I will post more.
|
« Last Edit: May 18th, 2004, 10:17pm by Dimitre » |
|
|
|
|
hurlbot
|
Re: pixels[] doubt
« Reply #5 on: Jan 23rd, 2003, 7:52am » |
|
I get this error with all the processing applets on your page: Connecting http://dimitre.locaweb.com.br/jars/sereia.jar with no proxy Downloading http://dimitre.locaweb.com.br/jars/sereia.jar to cache java.lang.IllegalArgumentException at java.util.zip.ZipInputStream.getUTF8String(Unknown Source) at java.util.zip.ZipInputStream.readLOC(Unknown Source) at java.util.zip.ZipInputStream.getNextEntry(Unknown Source) at sun.plugin.cache.CachedJarLoader.decompress(Unknown Source) at sun.plugin.cache.CachedJarLoader.access$500(Unknown Source) at sun.plugin.cache.CachedJarLoader$5.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.plugin.cache.Cache.privileged(Unknown Source) at sun.plugin.cache.CachedJarLoader.download(Unknown Source) at sun.plugin.cache.CachedJarLoader.load(Unknown Source) at sun.plugin.cache.JarCache.get(Unknown Source) at sun.plugin.net.protocol.jar.CachedJarURLConnection.connect(Unknown Source) at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile(Unknown Source) at sun.misc.URLClassPath$JarLoader.getJarFile(Unknown Source) at sun.misc.URLClassPath$JarLoader.<init>(Unknown Source) at sun.misc.URLClassPath$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.misc.URLClassPath.getLoader(Unknown Source) at sun.misc.URLClassPath.getLoader(Unknown Source) at sun.misc.URLClassPath.getResource(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at sun.applet.AppletClassLoader.findClass(Unknown Source) at sun.plugin.security.PluginClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.applet.AppletClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.applet.AppletClassLoader.loadCode(Unknown Source) at sun.applet.AppletPanel.createApplet(Unknown Source) at sun.plugin.AppletViewer.createApplet(Unknown Source) at sun.applet.AppletPanel.runLoader(Unknown Source) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Exception: java.lang.IllegalArgumentException
|
|
|
|
benelek
|
Re: pixels[] doubt
« Reply #6 on: Jan 23rd, 2003, 3:16pm » |
|
i also get this error with all the p5 applets on ur page.
|
|
|
|
Dimitre
|
Re: pixels[] doubt
« Reply #7 on: Feb 3rd, 2003, 8:41pm » |
|
Thanks Guys! I will check this. I decompressed all the jar files, for proce55ing cache reutilization, but maybe this only worked in Microsoft VM. Do you use Microsoft Virtual Machine, or Java Plugin?
|
|
|
|
Glen Murphy
|
Re: pixels[] doubt
« Reply #8 on: Feb 3rd, 2003, 11:51pm » |
|
I use the Java plugin, and they weren't working. ARr.
|
|
|
|
Dimitre
|
Re: pixels[] doubt
« Reply #9 on: Feb 19th, 2003, 9:30pm » |
|
thanks. Now it is fixed
|
|
|
|
|