kipper010 Posted September 22, 2007 Posted September 22, 2007 I was looking through some forums, and I came across an extraction method called Alpha-Masking and loved the idea until it came to actually making the mask. I find it EXTREMELY hard to draw the mask by hand with the paintbrush and curve tool! Is there an easier method drawing a mask? Quote
Myrddin Posted September 22, 2007 Posted September 22, 2007 Yes, the Magic Wand, but then it will look awful and unprofessional and defeat the purpose of an alpha mask in the first place. Sorry. Have you checked out Crazy Man Dan's tutorial on alpha masking? It explains the method you have employed thus far but you never know, it might lead you down a new road or spark off an idea or two. Quote How to Save Your Images under Different File Types My dA Gallery
Fisherman's Friend Posted September 23, 2007 Posted September 23, 2007 Weren't there attempts of a masking plugin once? Another thing which wasn't discussed or devolped further... Quote
Myrddin Posted September 23, 2007 Posted September 23, 2007 There is an Alpha Mask Import Plugin by Illnab1024. How that compares to other alpha masking in alternate programs I do not know. Is this what you meant? Quote How to Save Your Images under Different File Types My dA Gallery
Fisherman's Friend Posted September 23, 2007 Posted September 23, 2007 There is an Alpha Mask Import Plugin by Illnab1024. How that compares to other alpha masking in alternate programs I do not know. Is this what you meant? No, I know all plugins available. Long time ago there was a topic about masking. I can't find it at the moment, I believe it was in GD. Someone requested masking and then a discussion started (if I remeber right). Some users created rather a sketch of code (codelab). I pasted it into codelab and compiled a dll. It worked not that good (but it worked), and as I said, it was not developed further. Seems it died out. Quote
Myrddin Posted September 23, 2007 Posted September 23, 2007 Perhaps this may put you at ease for the time being: Over the lifetime of the 4.xx releases, these core design and architecture changes should enable such features as layer masks, adjustment layers, effect layers, composite layers, effect and adjustment chaining, soft selections, scripting and recorded actions, a completely new brush system, much more efficient memory usage, and better use of multiprocessor systems. If you post the .dll you have some kind, coding soul could enhance it until the official implementation. Look at ScriptLab, scripting in PDN will come eventually but pyro has given us this functionality early. Quote How to Save Your Images under Different File Types My dA Gallery
Enormator Posted September 23, 2007 Posted September 23, 2007 Tried my effect? http://paintdotnet.forumer.com/viewtopic.php?f=16&t=6466 Quote :Link: website
kipper010 Posted September 23, 2007 Author Posted September 23, 2007 Thanks to all of you guys for replying. I'm actually referring off of Crazy Man Dan's tutorial, and that's a nice effect, Enormator. Problem is, I'm actually referring to extracting a person from a background and as you know, a person isn't one primary color. I can't imagine how a plugin for Alpha-Masking would work....though I know nothing about Alpha-Masking. :? Oh, and I'm really looking forward to the 4.xx releases (nevermind that they're 2 years away) because of the custom brushes. It really is a disadvantage for Paint.NET not to have that feature. Quote
Bob Posted September 23, 2007 Posted September 23, 2007 Given the key sentence is: I find it EXTREMELY hard to draw the mask by hand [...] Is there an easier method? Yes, there is. It's named the magnetic lasso. Magnetic Lasso -- This is requested a lot. Tom wants to do this but we have no ETA. Quote No. Way. I've just seen Bob. And... *poof!*—just like that—he disappears into the mist again. ~Helio
Fisherman's Friend Posted September 23, 2007 Posted September 23, 2007 If you post the .dll you have some kind, coding soul could enhance it until the official implementation. Look at ScriptLab, scripting in PDN will come eventually but pyro has given us this functionality early. I don't think I'm allowed to do this due to the plugin share rights. Maybe I could post the code. I think I pasted it into a rtf document, the question is if I would find it (assumed that I still have it). What I don't know is if this is the right place to post it. Quote
Fisherman's Friend Posted September 23, 2007 Posted September 23, 2007 OK, let's try. I searched my PC and found a doc (not rtf :wink: )called "chroma masking" and I believe this is it. I don't nkow about differences between alpha and chroma masking, but maybe the code will find usage in any case. Don't get confused by the plugins listed on top of the code, I think the code is only based on these plugins. The entire code is not my work. If any of the authors does not want to have it here, please write it or PM me or a mod, I will remove it as fast as possible. /* * /! Warning, this is GPL code! * Color2Alpha Paint.NET plugin by Bibinou based on : * Color To Alpha plug-in v1.0 by Seth Burgess & others, 1999/05/14 * The GIMP -- an image manipulation program * Copyright (C) 1995 Spencer Kimball and Peter Mattis * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ void Render(Surface dst, Surface src, Rectangle rect) { PdnRegion selectionRegion = EnvironmentParameters.GetSelection(src.Bounds); Rectangle selection = this.EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); long CenterX = (long)(((selection.Right - selection.Left) / 2)+selection.Left); long CenterY = (long)(((selection.Bottom - selection.Top) / 2)+selection.Top); ColorBgra PrimaryColor = (ColorBgra)EnvironmentParameters.PrimaryColor; ColorBgra CurrentPixel = new ColorBgra(); double red, key_red, green, key_green, blue, key_blue, alpha, maxalpha; int rnew, gnew, bnew; for(int y = rect.Top; y < rect.Bottom; y++) { for (int x = rect.Left; x < rect.Right; x++) { if (selectionRegion.IsVisible(x, y)) { CurrentPixel = src[x,y]; red = CurrentPixel.R ; green = CurrentPixel.G ; blue = CurrentPixel.B ; key_red = PrimaryColor.R ; key_green = PrimaryColor.G ; key_blue = PrimaryColor.B ; /* Store red alpha component */ if (red >= key_red ) alpha = (key_red == 255 ? 0 : (red - key_red ) / (255 - key_red) ); else alpha = (key_red == 0 ? red / 255 : 1.0 - red / key_red ); maxalpha = alpha; /* Store green alpha component, if greater */ if (green >= key_green) alpha = (key_green == 255 ? 0 : (green - key_green) / (255 - key_green)); else alpha = (key_green == 0 ? green/ 255 : 1.0 - green / key_green ); if (alpha > maxalpha) maxalpha = alpha; /* Store blue alpha component, if greater */ if (blue >= key_blue ) alpha = (key_blue == 255 ? 0 : (blue - key_blue ) / (255 - key_blue )); else alpha = (key_blue == 0 ? blue / 255 : 1.0 - blue / key_blue ); if (alpha > maxalpha) maxalpha = alpha; /* Threshold the alpha */ //alpha = (maxalpha * 255) / pvals.threshold ; /* Using int to Math.Round the values */ if (alpha > 1) alpha = 1 ; else if (alpha < 0) alpha = 0 ; if (alpha > 0) { rnew = (int) ( Math.Round( (red - key_red ) / alpha + key_red ) ) ; gnew = (int) ( Math.Round( (green - key_green) / alpha + key_green ) ) ; bnew = (int) ( Math.Round( (blue - key_blue ) / alpha + key_blue ) ) ; } else { rnew = (int) red; gnew = (int) green; bnew = (int) blue; }; if ( rnew <=255 && gnew <=255 && bnew <=255 && rnew >=0 && gnew >=0 && bnew >= 0) { CurrentPixel.R = (byte)rnew ; CurrentPixel.G = (byte)gnew ; CurrentPixel.B = (byte)bnew ; CurrentPixel.A = (byte)(alpha * 255) ; dst[x,y] = CurrentPixel; } else { dst[x,y] = src[x,y]; } } } } } /* EOF */ Quote
Bob Posted September 23, 2007 Posted September 23, 2007 The only problem is that this code doesn't work. Quote No. Way. I've just seen Bob. And... *poof!*—just like that—he disappears into the mist again. ~Helio
Fisherman's Friend Posted September 23, 2007 Posted September 23, 2007 The only problem is that this code doesn't work. Rather scary as I made a working dll with codelab using exactly this code without changing a word. I think you have to select the color that has to get masked (don't hit me if I'm wrong). Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.