Jump to content

barkbark00

Members
  • Posts

    2,890
  • Joined

  • Last visited

Posts posted by barkbark00

  1. It's weird how new plugins/features always spark ideas for even better functionality... ;-)

    The transparency plugin seems to be morphing (even more) into a masking utility. That said, the ability to maximize the effect window would be extremely helpful when trying to fine-tune the placement of vertex handles.

    Also, if an additional handle is needed in a specific spot, being able to right-click to add it in-place would be...muy apreciado.

    Last one...

    When creating masks, it would be awesome to be able to switch between linear and bezier vertices, on a vertex by vertex basis (additional right-click functionality??).

    Your plugins are great as is, so look at these requests as far-fetched and wishful thinking... :D Thanks!

    Edit:

    ...

    Last one...

    ...

    I lied. :(

    And finally, an option to assign separate feather values to each vertex? This would make it easier to make very complex, blended masks; and, (IMO) it would make this effect quite unique in the graphic design world!

  2. Great stuff guys!

    One thing though. When drawing, I tended to use this plugin to isolate black lines drawn on a white canvas. Before, the default action of the plugin was to use a gray-scaled rendition of the current image as the alpha mask. Now, I have to copy my canvas and then enter the plugin to get the same functionality. I really miss the simplicity of my previous method. I know it's just one extra step, but there are times when I am working with hundreds of lines and repeat this process for each! That, and I don't think that adding it back would negatively effect any workflow where other mask selection methods are ultimately used...

    Please add that back, or make the old version available for download so I can use both versions (I lost mine when upgrading to win7). Thanks so much!

  3. Whoever made the image also made a simple mistake. They forgot to, or failed to adequately, blur the "ghost". The overall blend was decent, but the devil is in the details.

    See how the peaks and valleys in the ghost portion are more definitive? Nowhere else in the image is there that much detail, not even the part that is almost in focus...

    fake.jpg

  4. If you are using the "Move Selected Pixels" toll, make your you have the quality set to "Smooth". This will allow to to make non-stepped rotations of you selection while retaining most of the image quality. The other option is to move your selection to a new layer and use the Layers > Rotate/Zoom function (Ctrl+Shift+Z).

    file.php?id=5097&mode=view

    1624_0401b2522aed1755296975884f293f8d

  5. mosaic - i have found no plugin capable of doing this and i believe a feature like this will break more casual users to PDN as its something they are likely to do with their photos
    A good friend once told me, "Being too vague is like...".

    Anyway, I'm fairly certain that your request was misunderstood by d.a. Maybe you could post some examples of the type of mosaic effect you are interested in.

    Below are some "mosaic" plugins I found by using the search capability of this forum:

    viewtopic.php?f=16&t=29438

    viewtopic.php?f=16&t=30254

    The varied application of the term, "mosaic", in each case makes obvious the need for you to further clarify your request.

  6. Wow, this is great to see in real life...even if it doesn't do much. ;-)

    I now know that my attempts were nowhere close to a working effect. Thank you very much for the code and the helpful tips/comments! I have learned quite a bit just following the effect's workflow.

    I'm gonna play with this code and see if I can get it to dynamically grow the comparison region; turn it into a blur effect. lol.

    EDIT:

    Now, notice the effect of this--it leaves a ring around any noise that is of the noise's intensity averaged with 7 pixels surrounding it. To combat this, you could, for example, make a public (technically static but codelab assumes static) boolean array (outside the Render function so that all instances of Render() can access it) of the dimensions of the selection and set that array[x,y] to true if you found noise, and then make sure that you don't repeat the dst[x,y] = ColorBgra.FromBgra(...) line if any of the surrounding pixels are true.

    Is this something that would require me to loop through the src twice? Once to identify and store the location of the noise, then a second pass to remove it without using any of the noise pixels in the averaging of surrounding pixels...
  7. Sorry for double post...

    The post above may seem like a different course than what I was originally describing.

    This is what I wanted to do originally:

    Test each of the 8 pixels immediately surrounding the src (if !null) for similarity to the src based on user defined percent/decimal value.

    Keep track of how many of the surrounding pixels = !null.

    Allow user to set a requirement for how many of the surround pixels (adjusted to account for the null pixels) the src has to match for it not to be considered noise.

    Pixels failing the second test are replaced with the average of the pixels they did not match.

    --

    Anyway, the idea from my previous post came about in an attempt to simplify things for now as I "learn the ropes".

  8. I'm really just trying to learn C# for making plugins. I should probably start by learning C# as a whole... ;-)

    My desire is to build a kind of noise cancellation plugin that does the following:

    1. Averages all of the pixels surrounding src[x,y].

    //  X X X
    //  X O X
    //  X X X
    //  O = src[x,y]
    //  X = pixels to consider in average (if they exist).

    2. Read a user specified decimal value (as Amount1).

    3. Replace src[x,y] with with:

    (src[x,y]*(1-Amount1))+(value of averaged data*Amount1))
    //not quite pseudo-code...

    I'm not the kind of person that has to do everything myself, so if someone can make this plugin work using simple code that I would likely understand, I will not be mad... I am more likely to learn from examples than personal failures... ;-)

  9. well, I know I'm only concerned with RGB, not A. I actually think that I would want each channel to have an equal effect.

    My problem is as follows

    Source:

    R= 125

    G= 69

    B= 78

    Total = 272

    Comparison Target:

    R= 45

    G= 215

    B= 12

    Total = 272

    This leads me to believe that I would need to compare each channel separately...? I imaging that this would increase the processing time greatly.

    Is there a quicker alternative? Is more information needed about the desired operation?

  10. I am toying with writing a plugin that compares surrounding pixels to the source pixel.

    I understand (I think) what it would take to do an exact comparison. However, what would I do to check if a pixel is similar to the source based on a user specified percentage? Would I sum the each of the channels and simply do the math?

    This would assume that I already know which pixels I'm comparing.

  11. Great job dpy! I love your plugin set.

    I did find one bug with SpiralText. It crashes when the radius is set to '0'.

    Plugin Error Details:

    Hidden Content:
    File: C:\Program Files\Paint.NET\Effects\SpiralText.dll
         Name: SpiralTextEffect.SpiralTextEffectPlugin
         Version: 1.0.3570.33028
         Author: dpy
         Copyright: Copyright © dpy
         Website: http://paintnet.web.fc2.com/
         Full error message: PaintDotNet.WorkerThreadException: Worker thread threw an exception ---> System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
    Parameter name: length
      at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
      at SpiralTextEffect.SpiralTextEffectPlugin.Render(Surface dst, Surface src, Rectangle rect)
      at SpiralTextEffect.SpiralTextEffectPlugin.OnRender(Rectangle[] rois, Int32 startIndex, Int32 length)
      at PaintDotNet.Effects.Effect`1.Render(Rectangle[] renderRects, Int32 startIndex, Int32 length) in D:\src\pdn\paintdotnet\src\Effects\Effect`1.cs:line 57
      at PaintDotNet.Effects.Effect`1.Render(EffectConfigToken parameters, RenderArgs dstArgs, RenderArgs srcArgs, Rectangle[] rois, Int32 startIndex, Int32 length) in D:\src\pdn\paintdotnet\src\Effects\Effect`1.cs:line 100
      at PaintDotNet.Effects.Effect.Render(EffectConfigToken parameters, RenderArgs dstArgs, RenderArgs srcArgs, Rectangle[] rois) in D:\src\pdn\paintdotnet\src\Effects\Effect.cs:line 162
      at PaintDotNet.Effects.BackgroundEffectRenderer.ThreadFunction() in D:\src\pdn\paintdotnet\src\PaintDotNet\Effects\BackgroundEffectRenderer.cs:line 158
      --- End of inner exception stack trace ---
      at PaintDotNet.Effects.BackgroundEffectRenderer.DrainExceptions() in D:\src\pdn\paintdotnet\src\PaintDotNet\Effects\BackgroundEffectRenderer.cs:line 328
      at PaintDotNet.Effects.BackgroundEffectRenderer.Abort() in D:\src\pdn\paintdotnet\src\PaintDotNet\Effects\BackgroundEffectRenderer.cs:line 297
      at PaintDotNet.Effects.BackgroundEffectRenderer.Start() in D:\src\pdn\paintdotnet\src\PaintDotNet\Effects\BackgroundEffectRenderer.cs:line 257
      at PaintDotNet.Menus.EffectMenuBase.<>c__DisplayClass18.<>c__DisplayClass1c.b__d() in D:\src\pdn\paintdotnet\src\PaintDotNet\Menus\EffectMenuBase.cs:line 735

×
×
  • Create New...