Search the Community

Showing results for tags 'photo'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Information
    • Forum Rules
    • Paint.NET Search
    • Official Paint.NET website
    • Help Files (the official documentation)
  • Paint.NET
    • Paint.NET Discussion and Questions
    • The Pictorium
    • Tutorials - Publishing ONLY!
    • Competitions
    • Plugins - Publishing ONLY!
    • Troubleshooting & Bug Reports
  • Off-Topic
    • Grand Theory of Everything
  • Paint.NET Programming / Development
    • Plugin Developer's Central
    • Preview Center
    • Translation and Localization

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



Website URL









Found 6 results

  1. So, I was scanning a ton of photographs today and kept having to do the same steps to remove dust from the images. I automated it into a plugin. Enjoy. // Name: Remove Dust // Submenu: Photo // Title: BoltBait's Remove Dust v4.0 // Author: BoltBait // URL: // Desc: Remove dust from scanned photographs // KeyWords: dust|stamp|scan|clone #region UICode byte Amount1 = 0; // [1] Dust Color|White|Black #endregion // Setup for using Lighten blend op private BinaryPixelOp lightenOp = LayerBlendModeUtil.CreateCompositionOp(LayerBlendMode.Lighten); // Setup for using Darken blend op private BinaryPixelOp darkenOp = LayerBlendModeUtil.CreateCompositionOp(LayerBlendMode.Darken); // Here is the main render loop function unsafe void Render(Surface dst, Surface src, Rectangle rect) { for (int y = rect.Top; y < rect.Bottom; y++) { if (IsCancelRequested) return; ColorBgra* prevPtr = src.GetPointAddressUnchecked(rect.Left, y); ColorBgra* srcPtr = src.GetPointAddressUnchecked(rect.Left, y); ColorBgra* dstPtr = dst.GetPointAddressUnchecked(rect.Left, y); for (int x = rect.Left; x < rect.Right; x++) { ColorBgra CurrentPixel; if (Amount1 == 0) { // Remove white dust CurrentPixel = darkenOp.Apply(*prevPtr, *srcPtr); } else { // Remove black dust CurrentPixel = lightenOp.Apply(*prevPtr, *srcPtr); } *dstPtr = CurrentPixel; prevPtr = srcPtr; srcPtr++; dstPtr++; } } } There is no UI. Just run it and the white dust specks are gone. There is now a simple UI. Select White or Black and those color specks are gone! It's not perfect. It only works on very small specks. Basically what it does is Clone Stamp them out. Install the dll in the normal way. Then, restart Paint.NET and look in Effects > Photo > Remove Dust for the effect. Download Here For Paint.NET 3.5.11: For Paint.NET 4.0+: I'm thinking "Plugin of the Year". Yes?
  2. TechnoRobbo's Dodge and Burn (Adjustment Brush) DPI at V 1.4.0+ A Photo Retouching Tool This is a Plugin that was requested by Pratyush This simulates the classic photographic printing effect and adds a color aspect. It has plenty of "undo's" but a simple interface. Use Left Click to Apply and Right Click to Move around. Brush Designs , Blur and Sharpen suggestion by Eli. Full Screen and others suggested by Red Ochre Deasuration suggested by racerx Color Blend , Luminosity, Saturation and Contrast suggested by Pratyush Version 1.4.0+ includes changes by AnthonyScoffler Fix: removed pre-multiplying of alpha channel in output image Easier to read color button CTRL+Z for undo Hold Ctrl + Mouse Wheel to change the brush size Take a bow Anthony! Hidden Content: Version 1.3.28++ Bug Fix Custom Brush Version 1.3.23 - Turning off Shade Lock takes on new settings Version 1.3.22 - Each Shader retains it's individual Exposure & Intensity Settings Version 1.3.20 - ShadeLock is now persistent Version 1.3.18+ tested to 192 DPI 1920 x 1080 Version 1.3.17+ Fixes Luminosity and Add Mouse Wheel Control Version 1.3.15+ ColorBlend and Luminosity Modes suggested by Pratyush Version 1.3.14+ New Brush Designs by Eli, Enhanced Zoom (Zoom Out) Version 1.3.13+ adds a Contrast brush, fixes Red & Blue Checkbox switch Version 1.3.12+ Streamlines the Panning Version 1.3.11+ LockShade bug fix Version 1.3.10+ applies Color Checkbox to All Modes Version 1.3.9+ Hue Rotation + Preview v 1.3.8+ adds Saturation (and an Alpha Channel bug fix) v 1.3.7+ adds Desaturation Version 1.3.5+ Stippling, ClipBoard for Bachground Reference,Double-Click on Title to see menu. Version 1.3.4+ Opens to full screen Version 1.3.3+ Fixes a clamping issue at Left Border Version 1.3.2+ adds Blur and Sharpen Version 1.2.1 Zoom feature and Shade Lock Version 1.1.2+ fixes Hard Brush Version 1.1.1+ Different Brush patterns - Load a custom brush Menu: Effects->Photo
  3. The main purpose of seam carving is to reduce the width (or height) of an image without scaling (squishing) the image. This effect calculates the line through your photograph with the least amount of changes and deletes that line shifting all pixels over to fill the gap. This is often called "content aware resizing". Use This effect is designed to be used with natural photographs. It is not designed to be used with an active selection. So, before running the effect, press Ctrl-D to remove any active selection. Run the effect and click the OK button. One line of your image will be removed. Note: Version 1.5 allows more than one line to be cut at a time. However, there is a limitation on how many lines can be safely cut at one time. You may find that only a few lines may be cut before you need to run the effect again so that more lines can be safely cut. Version 2.0 removes this limitation. Please be patient when carving more than a few lines at a time. Due to the nature of the algorithm, the entire effect is run in a single thread. So, it may take a few seconds for the effect to show up after you move the slider. If you wish to shrink your photograph even further, press Ctrl-F to redo the effect. Continue pressing Ctrl-F until your photograph is the desired size. Protecting Elements This effect will only carve out areas with full alpha. That is, it will ignore areas of your image where the alpha is set below 255. You can use this to your advantage by selecting any area you wish to protect then use the Adjustments > Transparency plugin to lower the transparency slightly. Once you've finished with all of your carving, use the Adjustments > Transparency plugin to restore your image to full opacity. Download (For 4.0.6+): You'll find it in your Effects > Photo > Seam Carving menu. NOTE: This is slow on camera sized images. Sliding the slider up to 200 could take a couple of minutes to see anything. This is all due to the fact that it is running the algorithm in a single thread. Updates v2.2 - Improved messaging. Added to my plugin pack. v2.1 - Memory usage cut in half, speed improved, messaging improved. v2.0 - Increases carves up to 200 lines at a time, removed "see it" option. v1.5 - Carve more than one line at a time. v1.1 - Fixed bug where it was producing jagged edges. v1.0 - Initial release. _________________ More info about seam carving here: _________________
  4. Tomorrow is my birthday, but today you get the present! Remember when I wrote the Portrait plugin, MadJik wrote: Well, ETA is TODAY! It automates a bunch of steps that I make when fixing landscape pictures. It is obviously not right for everything, but I find it useful. Hopefully you will too. Download the Landscape.dll as part of my plugin pack here: If you have trouble installing this plugin, post your troubles here. Enjoy. For those that are interested in such things, here is the CodeLab source: // Author: BoltBait // Submenu: Photo // Name: Sharpen Landscape // URL: #region UICode Pair<double, double> Amount1 = Pair.Create( 0.0 , -0.25 ); // Position of Horizon int Amount2 = 50; // [0,100] Sky int Amount3 = 50; // [0,100] Grass int Amount4 = 100; // [0,200] Sharpen int Amount5 = 50; // [0,100] Saturation int Amount6 = 50; // [0,100] Final Multiply Adjustment #endregion // Setup for using the various blend ops private UserBlendOps.OverlayBlendOp overlayOp = new UserBlendOps.OverlayBlendOp(); private UserBlendOps.ColorDodgeBlendOp dodgeOp = new UserBlendOps.ColorDodgeBlendOp(); private UserBlendOps.MultiplyBlendOp multiplyOp = new UserBlendOps.MultiplyBlendOp(); private UnaryPixelOps.HueSaturationLightness saturationOp; unsafe void Render(Surface dst, Surface src, Rectangle rect) { Rectangle selection = this.EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); ColorBgra Sky = ColorBgra.FromBgr(255,128,0); ColorBgra Grass = ColorBgra.FromBgr(0,128,0); int HorizonRow = (int)Math.Round(((Amount1.Second + 1) / 2) * (selection.Bottom - selection.Top)); saturationOp = new UnaryPixelOps.HueSaturationLightness(0, 100+Amount5*3, 0); // Setup for calling the Blur function GaussianBlurEffect blurEffect = new GaussianBlurEffect(); PropertyCollection bProps = blurEffect.CreatePropertyCollection(); PropertyBasedEffectConfigToken bParameters = new PropertyBasedEffectConfigToken(bProps); bParameters.SetPropertyValue(GaussianBlurEffect.PropertyNames.Radius, 1); blurEffect.SetRenderInfo(bParameters, new RenderArgs(dst), new RenderArgs(src)); // Call the Blur function blurEffect.Render(new Rectangle[1] {rect},0,1); // Now in the main render loop, the dst canvas has a blurred 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++) { // Create a blue gradient at the top if (y < HorizonRow) { Sky.A = (byte)(int)((255.0 - (255.0 * y / HorizonRow ))*(Amount2/100.0)); } else { Sky.A = (byte)0; } // Create a green gradient at the bottom if (y > HorizonRow) { Grass.A = (byte)(int)((255.0 * (y-HorizonRow) / (selection.Bottom-HorizonRow))*(Amount3/100.0)); } else { Grass.A = (byte)0; } ColorBgra AdjustmentPixel = *dstPtr; ColorBgra SourcePixel = *srcPtr; // Sharpen (unsharp mask) double NewR = (double)SourcePixel.R + ((double)SourcePixel.R - (double)AdjustmentPixel.R) * (double)Amount4 / 100.0; double NewG = (double)SourcePixel.G + ((double)SourcePixel.G - (double)AdjustmentPixel.G) * (double)Amount4 / 100.0; double NewB = (double)SourcePixel.B + ((double)SourcePixel.B - (double)AdjustmentPixel.B) * (double)Amount4 / 100.0; AdjustmentPixel.R = Utility.ClampToByte(NewR); AdjustmentPixel.G = Utility.ClampToByte(NewG); AdjustmentPixel.B = Utility.ClampToByte(NewB); // Boost the saturation *dstPtr = saturationOp.Apply(AdjustmentPixel); // Add in the sky and grass *dstPtr = multiplyOp.Apply(*dstPtr, Sky); *dstPtr = dodgeOp.Apply(*dstPtr, Grass); // Finally, add a little "punch" to the overall picture AdjustmentPixel = *dstPtr; AdjustmentPixel.A = (byte)(int)(Amount6 * 255.0 / 100.0); *dstPtr = multiplyOp.Apply(*dstPtr, AdjustmentPixel); srcPtr++; dstPtr++; } } } Thanks to Tanel for the Sharpen (unsharp mask) code.
  5. pyrochild


    Download from my plugin set
  6. This filter make sharpen blurred images. For refocusing uses algorithm with deconvolution element. Use for recovery small defocused photos. Locate in menu Effects->Photo->Refocusing Simple Deconvolution.