World: r3wp
[View] discuss view related issues
older newer | first last |
Cyphre 1-Nov-2006 [5966] | Ah, you mean the 'key color' in PNG format spec...then I think this cannot be controlled using the SAVE function IMO. |
Henrik 1-Nov-2006 [5967] | rambo it? |
Rebolek 1-Nov-2006 [5968] | it's not a bug, you can say 'missing feature' :) |
Henrik 1-Nov-2006 [5969] | well, IMHO those also belong in RAMBO.. |
Rebolek 1-Nov-2006 [5970] | You need to manipulate tRNS chunk in PNG file. REBOL saves PNG files in color type 2 (true color) I think, so you must set tRNS chunk to RGB (2 bytes per color) value of color you want transparent. See http://www.faqs.org/rfcs/rfc2083.html |
Cyphre 1-Nov-2006 [5971] | yes, you would need the tRNS chunk for that feature. |
Brock 1-Nov-2006 [5972] | Out of my league, thanks for the responses. |
Rebolek 1-Nov-2006 [5973] | Brock: or you can make mask image and set the areas you want transparent to alpha 255 and REBOL saves aplpha chanel |
Brock 1-Nov-2006 [5974x2] | Rebolek, okay thanks, in theory I understand what needs to occure, but have no idea what this would look like in code. |
If you are interested in possibly creating a sample, I'd love to see it. | |
Anton 1-Nov-2006 [5976] | Check out help.gif, it has an alpha channel, which survives after saving and loading. print mold help.gif/alpha save/png %image.png help.gif view layout [image (load %image.png)] Now process the image, replacing a particular colour with transparent: img: copy help.gif colour: pick img 12x12 repeat i length? img [if colour = pick img i [poke img i 0.0.0.255]] view layout [box red at 10x10 image (img)] |
Maxim 1-Nov-2006 [5977] | but that alpha is only a one bit plane no? |
Anton 1-Nov-2006 [5978] | No, 8-bit alpha. Observe: img: copy help.gif colour: pick img 12x12 repeat i length? img [if colour = val: pick img i [val/4: mod i 256 poke img i val]] save/png %image.png img view layout [box 300x300 red at 20x20 image (load %image.png) (img/size * 8)] |
Maxim 1-Nov-2006 [5979x2] | that's really strange. its possible that converting from bmp to png, RT realised the need to save the potential green mask. so they probably store the image properly inside, but when creating one from scratch.. the channel is not. |
and this leads me to... how in hell this you stumble accross this? :-) | |
Anton 1-Nov-2006 [5981] | The image! datatype has an optional alpha channel. If it does not exist, it will be created when you set a pixel with alpha. |
Maxim 1-Nov-2006 [5982] | ok, I read back a bit and I understand more the origin of the discussion. I had assumed brock had an image with an alpha and was not able to save it out. his real question basically... how do I CREATE the alpha channel from View gfx. and you have answered that. sorry for stickin my head in my ass, I should have read above. |
Louis 1-Nov-2006 [5983] | Is there any way to disable the exit button in the upper right corner of a window (the button with the X in it) or else reprogram it to exit according to my own rebol code? |
Maxim 1-Nov-2006 [5984] | the window's feel is different and accepts 'close events (in feel/detect). it not very easy to deal with this because when you call 'view on a window, its feel is replaced automatically by view. so you must explicitely replace the feel AFTER calling view on a layout or a face. alternatively, you can also use an input even handler, which is probably a better solution: this is one way to handle the close for all windows: http://www.rebol.com/docs/view-system.html#section-5.13 |
Brock 2-Nov-2006 [5985x3] | Anton, great example... I was able to get this to work with a sample image that I created. Thanks so much. |
damn anti-aliasing!! now I have fringing or a halo effect around my image due to anti-aliasing. I'll see what I can do about this. Thanks again. | |
(I'm trying to create custom rounded bullets) | |
Maxim 2-Nov-2006 [5988] | ajusting gamma in the draw block may help, some artifacts may depend specifically on the colour being layered... |
Brock 2-Nov-2006 [5989x2] | My example uses some very contrasting colours. I'm guessing from your statement that you are suggesting making the original image background less contrasting and the effect will be minimized. |
I'll also play with eh gamma as you suggested as well. | |
Maxim 2-Nov-2006 [5991x2] | bad colors to mix are green and pink, for example. the effects are usually worse when they are side by side and edges overlap. |
a good trick is to set the gamma to one end, do the drawing and then compensate gamma back with its complement, to get original colors back. | |
Brock 2-Nov-2006 [5993] | yes, I had a green background, changing to a dark grey (near black) works nicely for my purpose, atleast on a larger image. |
Maxim 2-Nov-2006 [5994x4] | this is an old trick to fix the flickering stars effect you get when you try to move around small dots of white on a screen which has aliasing. |
(and bg is black) | |
but there are many possible edge artifacts... and its hard to say, what will be the best solution without looking at it directly. | |
(plus I'm not an AGG expert specifically) | |
Brock 2-Nov-2006 [5998x3] | I'm not using AGG in this instance. |
I found that the dark grey 'border' worked okay with a dark background and not so as suitable for a light background, atleast for the smaller image. | |
I'll play a little more before trying your gamma trick. | |
Maxim 2-Nov-2006 [6001x6] | dark haloes are sometimes due to the contrast of actual pixels when two colors are placed side-by side. |
consider this to be 2 pixels [b g r] [b g r] | |
if you had these two colors side by side (- meening that pixel channel is not lit): [b - - ] [- - r] | |
then I guess you can understand that our eye will notice that large 4 channel gap in between pixels. | |
the ordering of channels also means that these side-effects only occur in one direction: if you placed [ - - r] [b - - ] there would be no edge between red and blue (but will be from blue to next pixel) | |
MS's new font aliasing engine uses this technique to use sub channels so that edges actually hit pixel channels instead of complete pixels... whic is why some letters look colored on edges... but when you see it, there is very nice increase in overall quality... its like increasing the resolution of your screen by a factor of 3 ! | |
Louis 2-Nov-2006 [6007] | Maxim, thanks. I'll study that doc. |
Gabriele 2-Nov-2006 [6008] | brock, why don't you just use an alpha channel? |
Brock 2-Nov-2006 [6009x2] | I was able to get Anton's example to work in the scenario I had indicated above. I'm open to looking into your suggestion, do you have an example that I can use. I checked some of the rebol/view docs and the image datatype doc and don't see anything that guides me in the direction you are suggesting. |
By the way Anton, thanks for your example, works well except for the fringing around the ani-aliased part of the image... still maintains some of the colour of the original background colour. | |
Gabriele 2-Nov-2006 [6011x3] | if i understand correctly, you need to use draw to produce a transparent image. is that correct? |
so my question is, why do you need to make one color transparent, instead of using the alpha channel? | |
img: make image! 50x50 img/alpha: 255 ; make bg transparent draw img [pen black line-width 2 circle 25x25 20] save/png %test.png img | |
Maxim 2-Nov-2006 [6014] | he is not using draw. AFAIK |
Brock 2-Nov-2006 [6015] | Maxim, yes, I'm using draw. |
older newer | first last |