BoltBait Posted January 18, 2010 Share Posted January 18, 2010 I was processing a large set of photos the other day and was getting frustrated that I needed to run 4-5 different effects on each photo. I thought that all of these adjustments should be on the same UI so that I could just run one effect. So, that's what I built. (Nothing new here, just a combination of a bunch of effects.) It saved me a ton of time processing those photographs as the sliders were remembered between each run. Hopefully you'll find this useful too. To install, download this file to your C:/Program Files/Paint.NET/Effects folder and unzip it. Download here Tested with Paint.NET version 3.36 and above. Here's the CodeLab source: // Author: BoltBait // Submenu: Photo // Name: Combined Adjustments // URL: http://www.BoltBait.com/pdn // Title: BoltBait's Photo Adjustments v1.1 #region UICode double Amount1 = 0.2; // [0,1] Noise Reduction int Amount2 = -10; // [-100,100] Brightness int Amount3 = 10; // [-100,100] Contrast int Amount4 = 1; // [-10,10] Yellow Blue int Amount5 = 5; // [-100,100] Saturation int Amount6 = 30; // [0,100] Final Multiply Adjustment #endregion // Setup for using the various blend ops private UserBlendOps.MultiplyBlendOp multiplyOp = new UserBlendOps.MultiplyBlendOp(); private UnaryPixelOps.HueSaturationLightness saturationOp; // Rick, stop moving stuff around! private byte Clamp2Byte(int iValue) { if (iValue<0) return 0; if (iValue>255) return 255; return (byte)iValue; } unsafe void Render(Surface dst, Surface src, Rectangle rect) { Rectangle selection = this.EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); saturationOp = new UnaryPixelOps.HueSaturationLightness(0, 100+Amount5, 0); // Setup for calling the Noise Reduction function ReduceNoiseEffect noiseEffect = new ReduceNoiseEffect(); PropertyCollection nProps = noiseEffect.CreatePropertyCollection(); PropertyBasedEffectConfigToken nParameters = new PropertyBasedEffectConfigToken(nProps); nParameters.SetPropertyValue(ReduceNoiseEffect.PropertyNames.Radius, 10); nParameters.SetPropertyValue(ReduceNoiseEffect.PropertyNames.Strength, Amount1); noiseEffect.SetRenderInfo(nParameters, new RenderArgs(dst), new RenderArgs(src)); // Call the Reduce Noise function noiseEffect.Render(new Rectangle[1] {rect},0,1); // Setup for calling the Brightness and Contrast function BrightnessAndContrastAdjustment bacAdjustment = new BrightnessAndContrastAdjustment(); PropertyCollection cProps = bacAdjustment.CreatePropertyCollection(); PropertyBasedEffectConfigToken cParameters = new PropertyBasedEffectConfigToken(cProps); cParameters.SetPropertyValue(BrightnessAndContrastAdjustment.PropertyNames.Brightness, Amount2); cParameters.SetPropertyValue(BrightnessAndContrastAdjustment.PropertyNames.Contrast, Amount3); bacAdjustment.SetRenderInfo(cParameters, new RenderArgs(dst), new RenderArgs(dst)); // Call the Brightness and Contrast function bacAdjustment.Render(new Rectangle[1] {rect},0,1); // Now in the main render loop, the dst canvas has a fixed up version of the src canvas for (int y = rect.Top; y < rect.Bottom; y++) { ColorBgra* srcPtr = src.GetPointAddressUnchecked(rect.Left, y); ColorBgra* dstPtr = dst.GetPointAddressUnchecked(rect.Left, y); for (int x = rect.Left; x < rect.Right; x++) { // Boost the saturation *dstPtr = saturationOp.Apply(*dstPtr); // Yellow-Blue adjustment ColorBgra SourcePixel = *dstPtr; SourcePixel.R = Clamp2Byte(SourcePixel.R - Amount4/2); SourcePixel.G = Clamp2Byte(SourcePixel.G - Amount4/2); SourcePixel.B = Clamp2Byte(SourcePixel.B + Amount4); *dstPtr = SourcePixel; // Finally, add a little "punch" to the overall picture ColorBgra DestPixel = *dstPtr; DestPixel.A = (byte)(int)(Amount6 * 255.0 / 100.0); *dstPtr = multiplyOp.Apply(*dstPtr, DestPixel); srcPtr++; dstPtr++; } } } This is now included in my plugin pack. 1 Quote Download: BoltBait's Plugin Pack | CodeLab | and a Free Computer Dominos Game Link to comment Share on other sites More sharing options...
Simon Brown Posted January 19, 2010 Share Posted January 19, 2010 Doesn't ScriptLab solve that problem (although it doesn't let you easily change the settings for each photo)? Quote Link to comment Share on other sites More sharing options...
Ego Eram Reputo Posted January 19, 2010 Share Posted January 19, 2010 I immediately thought of Tanel's Photo Adjustments. But I see yours has quite different functions. I can see that I'd use both frequently. I love that you have supplied the source! Did you consider including a "sharpen" feature? Quote ebook: Mastering Paint.NET | resources: Plugin Index | Stereogram Tut | proud supporter of Codelab plugins: EER's Plugin Pack | Planetoid | StickMan | WhichSymbol+ | Dr Scott's Markup Renderer | CSV Filetype | dwarf horde plugins: Plugin Browser | ShapeMaker Link to comment Share on other sites More sharing options...
Mike Ryan Posted January 19, 2010 Share Posted January 19, 2010 Really cool! It would be pretty awesome if there was a slider that controlled the Portrait plugin of yours and the reverse effect. I find it useful, but mostly because it gives me more source code to go over. Good plugin and idea, and I would recommend packaging it if others feel the same Quote Link to comment Share on other sites More sharing options...
sandiee Posted January 19, 2010 Share Posted January 19, 2010 Whenever I go to use it, It comes up with an error and i have to restart paint.net.. Quote [center][img]http://i47.tinypic.com/2s960pi.png[/img][/center] Link to comment Share on other sites More sharing options...
BoltBait Posted January 19, 2010 Author Share Posted January 19, 2010 Whenever I go to use it, It comes up with an error and i have to restart paint.net.. This plugin requires the latest build of Paint.NET. Upgrade Paint.NET and it should work fine. Quote Download: BoltBait's Plugin Pack | CodeLab | and a Free Computer Dominos Game Link to comment Share on other sites More sharing options...
sandiee Posted January 19, 2010 Share Posted January 19, 2010 Whenever I go to use it, It comes up with an error and i have to restart paint.net.. This plugin requires the latest build of Paint.NET. Upgrade Paint.NET and it should work fine. For some reason ive always been hesistant to download the new version..Whats the difference and where can i download it? Quote [center][img]http://i47.tinypic.com/2s960pi.png[/img][/center] Link to comment Share on other sites More sharing options...
BoltBait Posted January 19, 2010 Author Share Posted January 19, 2010 Whenever I go to use it, It comes up with an error and i have to restart paint.net.. This plugin requires the latest build of Paint.NET. Upgrade Paint.NET and it should work fine. This is no longer true. I recompiled the plugin against Paint.NET 3.36 so you should download it again and it will work with your version of Paint.NET. Quote Download: BoltBait's Plugin Pack | CodeLab | and a Free Computer Dominos Game Link to comment Share on other sites More sharing options...
BoltBait Posted January 19, 2010 Author Share Posted January 19, 2010 I immediately thought of Tanel's Photo Adjustments. But I see yours has quite different functions.I can see that I'd use both frequently. I love that you have supplied the source! Did you consider including a "sharpen" feature? Yes, mine is quite different from Tanel's. I usually don't need to sharpen my indoor photos (which this is designed for) since the focus is not set to infinity. I did include a sharpen function in my Landscape plugin (which is designed for outdoor photos). Have you tried that? Quote Download: BoltBait's Plugin Pack | CodeLab | and a Free Computer Dominos Game Link to comment Share on other sites More sharing options...
sandiee Posted January 20, 2010 Share Posted January 20, 2010 Thankyou for allowing it to be used in the older version of paint.net Quote [center][img]http://i47.tinypic.com/2s960pi.png[/img][/center] Link to comment Share on other sites More sharing options...
Lance McKnight Posted January 20, 2010 Share Posted January 20, 2010 I can see usefulness for landscaping picture (working in tandem with Landscape plugin) or to improve texture that I plan to make soon (if I ever find the time...) Reading the source code made me cross-eyed, but I was wondering what effects did you pull together to make this plugin? *downloads* Quote Officially retired from this forum. Have a nice day. Link to comment Share on other sites More sharing options...
BoltBait Posted January 20, 2010 Author Share Posted January 20, 2010 Reading the source code made me cross-eyed, but I was wondering what effects did you pull together to make this plugin? OK, this is a combination of the following controls (top to bottom): 1. The Strength slider from the Effects > Noise > Reduce Noise effect 2&3. The Brightness and Contrast sliders from the Adjustments > Brightness/Contrast effect 4. The Yellow-Blue slider from my Adjustments > Color Balance plugin 5. The Saturation slider from the Adjustments > Hue/Saturation effect 6. Um... This last slider actually simulates the following: -Duplicate the layer -Change the top duplicate layer to blend mode Multiply -This slider is now the Opacity slider of the top duplicate layer's property box Basically, it functions like a Contrast adjustment for Saturation. Clear? Quote Download: BoltBait's Plugin Pack | CodeLab | and a Free Computer Dominos Game Link to comment Share on other sites More sharing options...
Lance McKnight Posted January 20, 2010 Share Posted January 20, 2010 It is as clear as a chocolate pie on the back of a wet elephant. Thanks though for taking the time to explain how it works. Now that I have the information, I'm sure to fire it up soon, and crank out some photomanips. Quote Officially retired from this forum. Have a nice day. Link to comment Share on other sites More sharing options...
Ego Eram Reputo Posted January 20, 2010 Share Posted January 20, 2010 I usually don't need to sharpen my indoor photos (which this is designed for) since the focus is not set to infinity. That makes perfect sense. I did include a sharpen function in my Landscape plugin (which is designed for outdoor photos). Have you tried that? I have both Sharpen and Sharpen+ installed and usually dive straight for those. To be honest I doubt I'd look to your Landscape plugin for a sharpen unless I was also using some of the other features as well. Thanks for this plugin. It will be very useful! 8) Quote ebook: Mastering Paint.NET | resources: Plugin Index | Stereogram Tut | proud supporter of Codelab plugins: EER's Plugin Pack | Planetoid | StickMan | WhichSymbol+ | Dr Scott's Markup Renderer | CSV Filetype | dwarf horde plugins: Plugin Browser | ShapeMaker Link to comment Share on other sites More sharing options...
Neil Cassidy Posted January 22, 2010 Share Posted January 22, 2010 Thanks for this, Boltbait! It's useful in and of itself as a single consolidated way to make a number of adjustments, and the source code is a great example of how to compose effects (and by composition, I mean function composition). Quote Segment Image : Average Color (HSL) : Eigen Blur : []Cool, new forum! Link to comment Share on other sites More sharing options...
Rick Brewster Posted January 27, 2010 Share Posted January 27, 2010 Thankyou for allowing it to be used in the older version of paint.net Umm ... why don't you just install the latest version of Paint.NET :? :?: Quote The Paint.NET Blog: https://blog.getpaint.net/ Donations are always appreciated! https://www.getpaint.net/donate.html Link to comment Share on other sites More sharing options...
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.