Leaderboard


Popular Content

Showing content with the highest reputation since 05/22/2020 in all areas

  1. 5 points
  2. 5 points
    Background made using the Making Polished Spacescapes v2 tutorial.
  3. 4 points
    Hi ! This plugin uses a specific error diffusion method: Sub-block error diffusion. The block size is fixed to 3x3 in this plugin. The image is split into 3x3 boxes and boxes are replaced by a pattern selected from a fixed collection of patterns (small squares in this plugin). Patterns contain black and white pixels. Errors caused by the replacement is diffused to the neighbor pixels. The algorithm is described here http://caca.zoy.org/wiki/libcaca/study/3 This algorithm is well suited to generate ASCII art image with the right collection patterns and box size. Result: And the source code // Name: Blockifier // Submenu: Stylize // Author: Pascal Ollive // Title: Blockifier // Version: 1.0 // Desc: Binary sub-block error diffusion // Keywords: sub-block|diffusion|dither|binary // URL: // Help: #region UICode #endregion private static byte[] pattern0 = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; private static byte[] pattern1 = { 255, 255, 255, 255, 255, 255, 255, 255, 255 }; private static byte[] pattern2 = { 255, 255, 0, 255, 255, 0, 0, 0, 0 }; private static byte[] pattern3 = { 0, 255, 255, 0, 255, 255, 0, 0, 0 }; private static byte[] pattern4 = { 0, 0, 0, 0, 255, 255, 0, 255, 255 }; private static byte[] pattern5 = { 0, 0, 0, 255, 255, 0, 255, 255, 0 }; private static byte[] pattern6 = { 0, 0, 0, 0, 255, 0, 0, 0, 0 }; private static byte[] pattern7 = { 255, 0, 0, 0, 0, 0, 0, 0, 0 }; private static byte[] pattern8 = { 255, 0, 0, 255, 0, 0, 0, 0, 0 }; private static byte[][] arrayOfPatterns = { pattern0, pattern1, pattern2, pattern3, pattern4, pattern5, pattern6, pattern7, pattern8 }; private static byte getSafeSurfacePixel(Surface s, int x, int y) { if ((x >= 0) && (y >= 0) && (x < s.Width) && (y < s.Height)) { return s[x, y].GetIntensityByte(); } return 0; } private static void setSafeSurfacePixel(Surface s, int x, int y, byte luma8bit) { if ((x >= 0) && (y >= 0) && (x < s.Width) && (y < s.Height)) { s[x, y] = ColorBgra.FromBgr(luma8bit, luma8bit, luma8bit); } } private static void copyPattern(byte[] pattern, Surface s, int x, int y) { setSafeSurfacePixel(s, x, y, pattern[0]); setSafeSurfacePixel(s, x + 1, y, pattern[1]); setSafeSurfacePixel(s, x + 2, y, pattern[2]); setSafeSurfacePixel(s, x, y + 1, pattern[3]); setSafeSurfacePixel(s, x + 1, y + 1, pattern[4]); setSafeSurfacePixel(s, x + 2, y + 1, pattern[5]); setSafeSurfacePixel(s, x, y + 2, pattern[6]); setSafeSurfacePixel(s, x + 1, y + 2, pattern[7]); setSafeSurfacePixel(s, x + 2, y + 2, pattern[8]); } private static byte div64(int n) { if (n > 16351) { return 255; } if (n < 0) { return 0; } return (byte) ((n + 32) / 64); } private static void diffuseError(byte[] pattern, Surface s, int x, int y) { // [a][b][c] 0 // [d][e][f] 1 // [g][h][i] 2 //3 4 5 6 7 int[] pixelTemp = new int[8]; pixelTemp[0] = 64 * getSafeSurfacePixel(s, x + 3, y); pixelTemp[1] = 64 * getSafeSurfacePixel(s, x + 3, y + 1); pixelTemp[2] = 64 * getSafeSurfacePixel(s, x + 3, y + 2); pixelTemp[3] = 64 * getSafeSurfacePixel(s, x - 1, y + 3); pixelTemp[4] = 64 * getSafeSurfacePixel(s, x, y + 3); pixelTemp[5] = 64 * getSafeSurfacePixel(s, x + 1, y + 3); pixelTemp[6] = 64 * getSafeSurfacePixel(s, x + 2, y + 3); pixelTemp[7] = 64 * getSafeSurfacePixel(s, x + 3, y + 3); // [a] int error = getSafeSurfacePixel(s, x, y) - pattern[0]; pixelTemp[0] = pixelTemp[0] + 2 * error; pixelTemp[1] = pixelTemp[1] + 5 * error; pixelTemp[2] = pixelTemp[2] + 6 * error; pixelTemp[3] = pixelTemp[3] + 5 * error; pixelTemp[4] = pixelTemp[4] + 17 * error; pixelTemp[5] = pixelTemp[5] + 17 * error; pixelTemp[6] = pixelTemp[6] + 9 * error; pixelTemp[7] = pixelTemp[7] + error; // [b] error = getSafeSurfacePixel(s, x + 1, y) - pattern[1]; pixelTemp[0] = pixelTemp[0] + 6 * error; pixelTemp[1] = pixelTemp[1] + 9 * error; pixelTemp[2] = pixelTemp[2] + 8 * error; pixelTemp[3] = pixelTemp[3] + 2 * error; pixelTemp[4] = pixelTemp[4] + 11 * error; pixelTemp[5] = pixelTemp[5] + 16 * error; pixelTemp[6] = pixelTemp[6] + 11 * error; pixelTemp[7] = pixelTemp[7] + error; // [c] error = getSafeSurfacePixel(s, x + 2, y) - pattern[2]; pixelTemp[0] = pixelTemp[0] + 20 * error; pixelTemp[1] = pixelTemp[1] + 14 * error; pixelTemp[2] = pixelTemp[2] + 8 * error; pixelTemp[4] = pixelTemp[4] + 3 * error; pixelTemp[5] = pixelTemp[5] + 9 * error; pixelTemp[6] = pixelTemp[6] + 9 * error; pixelTemp[7] = pixelTemp[7] + error; // [d] error = getSafeSurfacePixel(s, x, y + 1) - pattern[3]; pixelTemp[1] = pixelTemp[1] + 2 * error; pixelTemp[2] = pixelTemp[2] + 5 * error; pixelTemp[3] = pixelTemp[3] + 7 * error; pixelTemp[4] = pixelTemp[4] + 23 * error; pixelTemp[5] = pixelTemp[5] + 18 * error; pixelTemp[6] = pixelTemp[6] + 8 * error; pixelTemp[7] = pixelTemp[7] + error; // [e] error = getSafeSurfacePixel(s, x + 1, y + 1) - pattern[4]; pixelTemp[1] = pixelTemp[1] + 6 * error; pixelTemp[2] = pixelTemp[2] + 9 * error; pixelTemp[3] = pixelTemp[3] + 2 * error; pixelTemp[4] = pixelTemp[4] + 12 * error; pixelTemp[5] = pixelTemp[5] + 21 * error; pixelTemp[6] = pixelTemp[6] + 13 * error; pixelTemp[7] = pixelTemp[7] + error; // [f] error = getSafeSurfacePixel(s, x + 2, y + 1) - pattern[5]; pixelTemp[1] = pixelTemp[1] + 20 * error; pixelTemp[2] = pixelTemp[2] + 14 * error; pixelTemp[4] = pixelTemp[4] + 2 * error; pixelTemp[5] = pixelTemp[5] + 11 * error; pixelTemp[6] = pixelTemp[6] + 15 * error; pixelTemp[7] = pixelTemp[7] + 2 * error; // [g] error = getSafeSurfacePixel(s, x, y + 2) - pattern[6]; pixelTemp[2] = pixelTemp[2] + 2 * error; pixelTemp[3] = pixelTemp[3] + 12 * error; pixelTemp[4] = pixelTemp[4] + 32 * error; pixelTemp[5] = pixelTemp[5] + 14 * error; pixelTemp[6] = pixelTemp[6] + 4 * error; // [h] error = getSafeSurfacePixel(s, x + 1, y + 2) - pattern[7]; pixelTemp[2] = pixelTemp[2] + 6 * error; pixelTemp[4] = pixelTemp[4] + 12 * error; pixelTemp[5] = pixelTemp[5] + 32 * error; pixelTemp[6] = pixelTemp[6] + 13 * error; pixelTemp[7] = pixelTemp[7] + error; // [i] error = getSafeSurfacePixel(s, x + 2, y + 2) - pattern[8]; pixelTemp[2] = pixelTemp[2] + 20 * error; pixelTemp[5] = pixelTemp[5] + 12 * error; pixelTemp[6] = pixelTemp[6] + 28 * error; pixelTemp[7] = pixelTemp[7] + 4 * error; // Apply error diffusion setSafeSurfacePixel(s, x + 3, y, div64(pixelTemp[0])); setSafeSurfacePixel(s, x + 3, y + 1, div64(pixelTemp[1])); setSafeSurfacePixel(s, x + 3, y + 2, div64(pixelTemp[2])); setSafeSurfacePixel(s, x - 1, y + 3, div64(pixelTemp[3])); setSafeSurfacePixel(s, x, y + 3, div64(pixelTemp[4])); setSafeSurfacePixel(s, x + 1, y + 3, div64(pixelTemp[5])); setSafeSurfacePixel(s, x + 2, y + 3, div64(pixelTemp[6])); setSafeSurfacePixel(s, x + 3, y + 3, div64(pixelTemp[7])); } // Weighted comparison (upper left pixel harder to compensate) // [ 8 7 5 ] // [ 7 6 5 ] // [ 5 5 4 ] // 3x3 pixel square private static int getPatternDiff(Surface s, int x, int y, byte[] pattern) { int patternDiff = Math.Abs(getSafeSurfacePixel(s, x, y) - pattern[0] + getSafeSurfacePixel(s, x + 1, y ) - pattern[1] + getSafeSurfacePixel(s, x + 2, y ) - pattern[2] + getSafeSurfacePixel(s, x, y + 1) - pattern[3] + getSafeSurfacePixel(s, x + 1, y + 1) - pattern[4] + getSafeSurfacePixel(s, x + 2, y + 1) - pattern[5] + getSafeSurfacePixel(s, x, y + 2) - pattern[6] + getSafeSurfacePixel(s, x + 1, y + 2) - pattern[7] + getSafeSurfacePixel(s, x + 2, y + 2) - pattern[8]); int weightedError = (8 * Math.Abs(getSafeSurfacePixel(s, x, y) - pattern[0]) + 7 * Math.Abs(getSafeSurfacePixel(s, x + 1, y ) - pattern[1]) + 5 * Math.Abs(getSafeSurfacePixel(s, x + 2, y ) - pattern[2]) + 7 * Math.Abs(getSafeSurfacePixel(s, x, y + 1) - pattern[3]) + 6 * Math.Abs(getSafeSurfacePixel(s, x + 1, y + 1) - pattern[4]) + 5 * Math.Abs(getSafeSurfacePixel(s, x + 2, y + 1) - pattern[5]) + 5 * Math.Abs(getSafeSurfacePixel(s, x, y + 2) - pattern[6]) + 5 * Math.Abs(getSafeSurfacePixel(s, x + 1, y + 2) - pattern[7]) + 4 * Math.Abs(getSafeSurfacePixel(s, x + 2, y + 2) - pattern[8])); return 52 * patternDiff + 9 * weightedError; } void Render(Surface dst, Surface src, Rectangle rect) { byte[] closestPattern = null; int arrayOfPatternLength = 0; int left = rect.Left / 3; int top = rect.Top / 3; int nbHorizontalBlock = (rect.Right - (3 * left) + 2) / 3; int nbVerticalBlock = (rect.Bottom - (3 * top) + 2) / 3; dst.CopySurface(src, rect.Location, rect); for (int y = 0; y < nbVerticalBlock; y++) { if (IsCancelRequested) return; for (int x = 0; x < nbHorizontalBlock; x++) { if (closestPattern == pattern3) { // include extra pattern arrayOfPatternLength = arrayOfPatterns.Length; } else { arrayOfPatternLength = arrayOfPatterns.Length - 1; } closestPattern = arrayOfPatterns[0]; int diffMin = getPatternDiff(dst, 3 * (x + left), 3 * (y + top), arrayOfPatterns[0]); for (int p = 1; p < arrayOfPatternLength; p++) { int diff = getPatternDiff(dst, 3 * (x + left), 3 * (y + top), arrayOfPatterns[p]); if (diff < diffMin) { closestPattern = arrayOfPatterns[p]; diffMin = diff; } } diffuseError(closestPattern, dst, 3 * (x + left), 3 * (y + top)); copyPattern(closestPattern, dst, 3 * (x + left), 3 * (y + top)); } } } Blockifier.zip
  4. 4 points
    I never knew about this ... love the outcome. Thanks @Pixey and thanks @Djisves for reviving it. Classy Cartier image ... what font is it ? It's very sophisticated (and yeh I can do sophistication ... 😋)
  5. 4 points
  6. 3 points
  7. 3 points
  8. 3 points
    Fun tutorial, thank you. This is the first image I post that I used BoltBait's Object Shadow Pro on.
  9. 3 points
  10. 3 points
    Interesting use of Neon Edges 😁 I love the colours, very plasticine-y! Thank you @ReMake. I think you applied the Ripple effect on the top layer as well. Perhaps you should point that out in the tutorial steps. For anyone interested: You can use just about any thick, sans serif font on its own layer and then Effects -> Noise -> Median. In my case, I used Arial Black, size 192, each letter on its own layer, Median 16, merge, Median 16 again.
  11. 3 points
    Mosaic vs Sketch Same photos, different effects Facet I II Scribble I II Cuboids vs Scribble "What's your name?" - "Nine Ball." "No, what's your real name?" - "Eight Ball." Thanks for your visit. Have a safe weekend
  12. 3 points
    I enjoyed this one, thank you @Pixey. Now, on to more text tutorials.
  13. 2 points
    This update adds XMP metadata support, 3 new translations, some UI improvements, and several bug fixes. I'd like to point out the addition of a right-click menu that's now available from the thumbnail strip at the top of the window: If you’re using the Windows Store release, you should get the update automatically within the next 24 hours. You can also force an update check by following these instructions. For the Classic release, you should be offered the update automatically within the next week or so. You can get the update sooner by going to ⚙ Settings → Updates → Check Now. You can also download and install it directly from the website. Changes since 4.2.10: New: XMP metadata is now preserved for supported file types (PDN, JPEG, PNG, TIFF, JPEG XR, HEIC, AVIF, WEBP) New: Belarusian (be) translation New: Greek (el) translation New: Slovenian (sl) translation New: Added a right-click context menu to the image thumbnail/tab. It contains commands for Copy Path, Open Containing Folder, Save, Save As, and Close. New: The items in the File -> Open Recent menu now have a tooltip with the full file path for the image Changed: The selection outline animation is now smoother (2x the framerate) Fixed: Saving with the HEIC file type is no longer limited to a max Quality value of 90. This limitation was in place because of a crash due to heap corruption, which no longer happens. Fixed: The NVIDIA sharpening setting will no longer cause trippy distortions in the canvas area Fixed an issue with loading very small TGA images, first reported here: https://forums.getpaint.net/topic/116100-tga-rle-truecolor-1x1-image-failed-to-load/. Thanks @null54 or the fix! Fixed: Error dialogs when opening images now consistently show the file path Fixed a PropertyNotFoundException error message when saving JPEG images with a particular ordering of metadata. This was due to a bug in Windows 7's WIC JPEG codec. First reported here: https://forums.getpaint.net/topic/116079-jpg-cant-save-some-file/ Fixed clipped text rendering in the Curves adjustment dialog in some non-English translations. Fixed a crash when running the app with a DPI scaling setting of 500% Fixed a crash that would sometimes happen when running effects with very small selections Fixed some IndirectUI controls not honoring their default values if also initialized in read only (disabled) mode. Thanks @BoltBait for the fix! Fixed a memory leak in the effect system that was causing 1 orphaned thread per effect invocation Changed: Removed the use of NTFS Transactions, which was causing trouble with OneDrive. Microsoft has also deprecated this technology. New: Added /openCrashLogFolder command-line argument. This is intended for simplifying troubleshooting workflows. New: Added /forceUpdateCheck command-line argument. This is intended for troubleshooting scenarios to simplify acquiring the latest version, e.g. "just run paintdotnet:/forceUpdateCheck" instead giving a longer list of buttons to click on. Updated WebPFileType plugin to version 1.3.4.0, which adds XMP metadata support. Thanks @null54! Updated DDSFileTypePlus plugin to version 1.10.3. This fixes an issue with saving in the A1R5G5B5, A4R4G4B4, and R5G6B5 formats, and adds support for reading files that use a 'BC7\0' FourCC. Thanks @null54! Enjoy!
  14. 2 points
    I've opened a support ticket with Dropbox to try and find out why my links are failing.
  15. 2 points
    I'm sorry, but today I discovered that the updated effect doesn't work the way it should. I apologize to everyone who uploaded the wrong plugin. I recompiled it and re-posted it in the first post. Now the effect works correctly. Please update it again.
  16. 2 points
    Hi ! I modified the engine of my sharpening plugin, the sharpen amount is now following the standard. I changed how the sharpen is applied. The slider has a nonlinear effect on result allowing to have more range. (Math enthusiast will spot easily the sequence of values used). And the source code. // Name: Slight edge boost // Submenu: Photo // Author: Pascal Ollive // Title: Slight edge boost // Version: 1.4 // Desc: Gaussian unsharp mask // Keywords: Sharpening|Gaussian|filter // URL: // Help: #region UICode IntSliderControl sliderValue = 5; // [0,10] Strength #endregion // 10 amounts depending of sliderValue private static byte[] AMOUNT = {2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233}; // 2 * Math.exp(-6*x^2+y^2) + Math.exp(-9*x^2+y^2/8) r=1.5 // sum(matrix) = 0 // factor = 65536 private static int[] KERNEL7x7 = { -3, -34, -150, -248, -150, -34, -3, -34, -409, -1831, -3021, -1831, -409, -34, -150, -1831, -8423, -16633, -8423, -1831, -150, -248, -3021, -16633, 131068, -16633, -3021, -248, -150, -1831, -8423, -16633, -8423, -1831, -150, -34, -409, -1831, -3021, -1831, -409, -34, -3, -34, - 150, -248, -150, -34, -3 }; // Truncated matrix => border management private static int[] KERNEL5x5 = { -409, -1831, -3021, -1831, -409, -1831, -8423, -16633, -8423, -1831, -3021, -16633, 128592, -16633, -3021, -1831, -8423, -16633, -8423, -1831, -409, -1831, -3021, -1831, -409 }; private static int[] KERNEL3x3 = { -8423, -16633, -8423, -16633, 100224, -16633, -8423, -16633, -8423 }; private static int[][] KERNEL_ARRAY = { null, // identity KERNEL3x3, KERNEL5x5, KERNEL7x7 }; private long strength = 21; // [2,233] // Utility function to provide result in 8-bit range // strength 2^5 // factor 2^16 // 21-bit scale private static byte to8bit(long n) { long result = (n + 1048576) >> 21; if (result > 255) { return 255; } if (result < 0) { return 0; } return (byte) result; } // [ p0 ][center][ p2 ] <= Extend border // [ p0 ][center][ p2 ] (center = p1) // [ p3 ][ p4 ][ p5 ] private ColorBgra convolveBorder(ColorBgra[] arrayOfPoints) { long r = (KERNEL3x3[0] + KERNEL3x3[3]) * strength * arrayOfPoints[0].R + ((KERNEL3x3[1] + KERNEL3x3[4]) * strength + 2097152) * arrayOfPoints[1].R + (KERNEL3x3[2] + KERNEL3x3[5]) *strength * arrayOfPoints[2].R + KERNEL3x3[6] * strength * arrayOfPoints[3].R + KERNEL3x3[7] * strength * arrayOfPoints[4].R + KERNEL3x3[8] * strength * arrayOfPoints[5].R; long g = (KERNEL3x3[0] + KERNEL3x3[3]) * strength * arrayOfPoints[0].G + ((KERNEL3x3[1] + KERNEL3x3[4]) * strength + 2097152) * arrayOfPoints[1].G + (KERNEL3x3[2] + KERNEL3x3[5]) * strength * arrayOfPoints[2].G + KERNEL3x3[6] * strength * arrayOfPoints[3].G + KERNEL3x3[7] * strength * arrayOfPoints[4].G + KERNEL3x3[8] * strength * arrayOfPoints[5].G; long b = (KERNEL3x3[0] + KERNEL3x3[3]) * strength * arrayOfPoints[0].B + ((KERNEL3x3[1] + KERNEL3x3[4]) * strength + 2097152) * arrayOfPoints[1].B + (KERNEL3x3[2] + KERNEL3x3[5]) * strength * arrayOfPoints[2].B + KERNEL3x3[6] * strength * arrayOfPoints[3].B + KERNEL3x3[7] * strength * arrayOfPoints[4].B + KERNEL3x3[8] * strength * arrayOfPoints[5].B; return ColorBgra.FromBgr(to8bit(b), to8bit(g), to8bit(r)); } private void copyBorderLeft(Surface src, int x, int y, ColorBgra[] dest) { dest[0] = src[x, y - 1]; dest[1] = src[x, y]; dest[2] = src[x, y + 1]; dest[3] = src[x + 1, y - 1]; dest[4] = src[x + 1, y]; dest[5] = src[x + 1, y + 1]; } private void copyBorderRight(Surface src, int x, int y, ColorBgra[] dest) { dest[0] = src[x, y - 1]; dest[1] = src[x, y]; dest[2] = src[x, y + 1]; dest[3] = src[x - 1, y - 1]; dest[4] = src[x - 1, y]; dest[5] = src[x - 1, y + 1]; } private void copyBorderTop(Surface src, int x, int y, ColorBgra[] dest) { dest[0] = src[x - 1, y]; dest[1] = src[x, y]; dest[2] = src[x + 1, y]; dest[3] = src[x - 1, y + 1]; dest[4] = src[x, y + 1]; dest[5] = src[x + 1, y + 1]; } private void copyBorderBottom(Surface src, int x, int y, ColorBgra[] dest) { dest[0] = src[x - 1, y]; dest[1] = src[x, y]; dest[2] = src[x + 1, y]; dest[3] = src[x - 1, y - 1]; dest[4] = src[x, y - 1]; dest[5] = src[x + 1, y - 1]; } private ColorBgra convolve(Surface src, int x, int y, byte radius) { int[] kernel = KERNEL_ARRAY[radius]; long r = src[x, y].R << 21; long g = src[x, y].G << 21; long b = src[x, y].B << 21; int offset = 0; for (int j = y - radius; j <= y + radius; j++) { for (int i = x - radius; i <= x + radius; i++) { ColorBgra srcPixel = src[i, j]; r = r + kernel[offset] * strength * srcPixel.R; g = g + kernel[offset] * strength * srcPixel.G; b = b + kernel[offset] * strength * srcPixel.B; offset = offset + 1; } } return ColorBgra.FromBgr(to8bit(b), to8bit(g), to8bit(r)); } private ColorBgra processPixel(Surface src, int x, int y, ColorBgra[] arrayOfPoints) { if (((x == 0) || (x == src.Width - 1)) && ((y == 0) || (y == src.Height - 1))) { // Extreme corner => identity return src[x, y]; } if (x == 0) { copyBorderLeft(src, x, y, arrayOfPoints); return convolveBorder(arrayOfPoints); } if (x == src.Width - 1) { copyBorderRight(src, x, y, arrayOfPoints); return convolveBorder(arrayOfPoints); } if (y == 0) { copyBorderTop(src, x, y, arrayOfPoints); return convolveBorder(arrayOfPoints); } if (y == src.Height - 1) { copyBorderBottom(src, x, y, arrayOfPoints); return convolveBorder(arrayOfPoints); } if ((x == 1) || (x == src.Width - 2) || (y == 1) || (y == src.Height - 2)) { return convolve(src, x, y, 1); } if ((x == 2) || (x == src.Width - 3) || (y == 2) || (y == src.Height - 3)) { return convolve(src, x, y, 2); } return convolve(src, x, y, 3); } void PreRender(Surface dst, Surface src) { // strength 5-bit precision [2/32 .. 233/32] strength = AMOUNT[sliderValue]; } void Render(Surface dst, Surface src, Rectangle rect) { ColorBgra[] borderPixels = new ColorBgra[6]; for (int y = rect.Top; y < rect.Bottom; y++) { if (IsCancelRequested) return; for (int x = rect.Left; x < rect.Right; x++) { dst[x, y] = processPixel(src, x, y, borderPixels); } } } SlightEdgeBoost.zip
  17. 2 points
    Hi, I'm happy to say I fix it! I found my old install file (4.1.4 version) I installed with any error. THen, I opend paint.net update menu and paint.net automatically updated to latest version with any errors. I think it was because windows was thinking old version 4.1.4 still there, but wasn't and it was generating the error. Can't uninstall old version, because was not really installed. To be honest I don't know why windows tool https://support.microsoft.com/en-us/help/17588/fix-problems-that-block-programs-from-being-installed-or-removed was not detecting any error. It was really frustating. Hope this post help. Thank you
  18. 2 points
    That's like Rembrant saying it's down to the brush. It ain't
  19. 2 points
    Me too 😉 Interesting use of effects and some great results Vagabondi
  20. 2 points
  21. 2 points
    After receiving a request and encouraged to make an official release, here is the BlurBlend plugin. This plugin was created in CodeLab where the source image is copied, with the Gaussian blur running while presenting you with a host of blending options ranging from Paint.NET's default blending modes and @ReMake blending algorithms he shared in the Plugin Development Central. The Interface The plugin will be found in the Blur Effect submenu. Please see @lynxster4 wonderful Ariel image to see how this plugin can be used. BlurBlend.zip
  22. 1 point
    This tutorial is available as a PDF. Click here to view or download it I found this psd tutorial here and wanted to create something similar with Paint.net. I think the outcome isń´t too bad but let me know if the tutorial is not ok as I am fairly new to this . I used in this tutorial: Layer blending modes Gaussian Blur Curves Bevel Selection Smudge Aa´s Assistant SinWaves This is the final image with the text: And these are the steps to get there, I tried to make them compact to cut down on amount of images, let me know if they are too compact :
  23. 1 point
    The best Indie band around in the UK right now IMO. ( ... Heather is absolutely drop dead gorgeous ...)
  24. 1 point
    This plugin may be more interesting than useful (and interesting may be a matter of opinion). It's in the Effects>Object menu. Plugin: EdgeExpander.zip Quoting from the Help menu: ---------- Edge Expander expands object edges to include the pixels within a given distance of the original edge pixels. The edge consists of the pixels above an opacity threshold which border pixels below the threshold. Each expanded edge pixel is set to the color of the nearest edge pixel. The transparency depends on the distance from the edge. The controls are: Use Full Distance Range: When checked, the distance range extends to the full window. The Maximum Distance control will be disabled. Maximum Distance: Specifies the pixel distance the edge will be expanded. Fade Rate: Specifies the rate at which the pixels become transparent as they approach the Maximum Distance. Setting the rate to zero disables fading. Setting the rate to one produces a linear fade. The transparency of expanded edge pixels is determined by the Fade Rate and the transparency of the nearest edge pixel, unless the Make Pixels Above Threshold Opaque option is enabled. Opacity Threshold: Specifies the minimum alpha for object pixels. Pixels whose alphas are below this value are background pixels and are either part of the expanded edge if within the Maximum Distance, or become transparent. Make Pixels Above Threshold Opaque: When checked, pixels whose alphas are above the Opacity Threshold become fully opaque. Only Expand Edges Inside Selection: When checked, edges ouside the current selection are ignored and will not expand into the selction. ---------- The user interface: Here is a simple example using an image from toe_head2001: Original image: Image with the edges expanded with full range and zero fade rate: The plugin uses the fast NearestPixel transform discussed in the Fast algorithm for finding the minimum distances to a set thread. It's a Visual Studio project consisting of the main project and two support files. Main project: EdgeExpander.zip Support files: DistanceTransformAndHelp.zip Though the plugin was mostly written as an experiment, I can think of a few possible uses for it, including softening edges for antialiasing and as a sort of more flexible Crystallize effect, which I'll explain in a follow-up comment.
  25. 1 point
    This is a CodeLab port of @harold's NormalMapPlus plugin. It's functionally identical, except for some fixes, the slider controls having an extra decimal place (due to the way CodeLab works), and the addition of a brief Help menu. Though the code is functionally the same, it was somewhat rewritten. It's in the Stylize submenu. The fixes are: 1) The ROI boundary pixels are handled correctly. 2) The normals are computed at the correct positions, rather than being shifted one pixel left. 3) The JIT compiler optimization crash doesn't occur. (The crash is almost certainly not due to a bug in the original plugin code, and will probably be fixed in the JIT compiler soon.) Here is the DLL (Version 1.4): NormalMapPlus.zip Here is the code: EDIT 01 AUG 1017: Moved to Stylize window. Changed version to 1.4.
  26. 1 point
    UPDATE: Version 3.8 of my effects is released. This release adds two effects, Gridlines and Object Align. All effects have significant speed inprovements, especially Drop Shadow. Many have usability improvements as well. All effects are also translated into Russian and Dutch. Special thanks to xmario for helping me with the Russian translation of these effects. Thanks also to moc426 for allowing me to release an Object Align effect. Effects per category: Drop Shadow: The "Drop Shadow" effect, under the Object effect menu. With offset, widening, blur, opacity and a color picker. Duotones: "Duotone Light" and "Duotone Ink on Paper" adjustments. Monochromes: "Cyanotype", "Sepia 2", "Grayscale on Colored Paper" and "Monochrome Ink on Paper" adjustments. Blurs: "Average Blur" and "Smart Blur" effects, under the Blurs effect menu. Color Accent: "Color Accent" adjustment. Fade Edge: "Fade Edge" effect, under the Photo effect menu. Gradient: A four-color, non-linear "Gradient" effect, with high quality color dithering. Gridlines: Draws a grid with horizontal and vertical lines, under the render menu. Object Align: Aligns the object in the selection to the selection. This version contains an installer. Just run the installer, it will ask you which effects you want to install and copy the required dll's into the Paint.NET effects folder. It will make no other modifications to your system. Please note: Paint.NET version 3.5.2 or later is required. Download (installer version for Classic paint.net) >>users.telenet.be/krisvandermotten Download (zipped DLLs for manual installation with Store version of paint.net) >>Zipped DLLs Store version installation Leave your reactions here in the forum.
  27. 1 point
    I wanna go here even more ...
  28. 1 point
  29. 1 point
    Thank you so much @Djisves! I'm glad you enjoyed the tutorial. Yes, resizing took a little something away from it, but it is still very good. And I can never say how much I love Blurblend. I use it almost all the time. Looking forward to the next version! 😊
  30. 1 point
    This tutorial is available as a PDF. Click here to view or download it Plugins needed: 1. Diagonal Lines 2. Outline Object 3. Text Mask from here: https://forums.getpaint.net/topic/111330-unfinished-plugins/?do=findComment&comment=550999 4. Drop Shadow 5. Bevel Object 6. AA's_Assistant I used 'pooplatter' font from here: https://www.dafont.com/pooplatter.font Fill Background with black color then add a new layer and fill that layer (White) with white color. Add a new layer (Stripe) and run Diagonal Lines effect with the following settings: Run Outline Object with the following settings: Now you must to have that: Merge layer down (Stripe + White) and run Text Mask effect with the following settings: Now you must to get that: Duplicate the White layer (I gave it the name: White - eroded text) and in that layer run the AA's_Assistant 17 times to get an eroded text. Median is part of Noise submenu. Before that, make the layer underneath invisible to see the effect of your actions. Run Drop Shadow effect with the following settings: Make visible the underneath layer and run AA's_Assistant 3 times. Select White layer and run Bevel Object effect with the following settings: Final result: Inspired from here: https://www.youtube.com/watch?v=v72VmVmR6cw
  31. 1 point
    This tutorial is available as a PDF. Click here to view or download it This is an adaptation of the PS tutorial Create a Plasticine Text Effect in Adobe Photoshop. The result of this tutorial is shown below. Plugins required: TG Angle Align Object by @moc426 or Align Object by @xod Ripple AA's Asistant Cell Texture Emboss+ Neon Edges Bevel Object Font required: Insaniburger Create a New Image () 600x450 px. Set the Primary Color to 333F44 and fill () the image. Add a New layer () and run the Clouds () effect (Effects -> Render -> Clouds) with Scale 40 and Roughness 0,25: Apply the TG Angle effect (Effects -> Stylize -> TGAngle) with the settings as shown below: Set () the Layer Blending Mode to Overlay and set the Opacity to 15. Merge () both layers. We got a Board for modeling clay plasticine. Turn off the visibility of the layer. Add a New Layer (). Set Primary color to 65A033 and type () your text in Insaniburger font with size 108 and Bold () style. Place the text in the center using the Align Object effect (Effects -> Align Object or Effects -> Object -> Align Object). Run the Ripple effect (Effects -> Distort -> Ripple) with the settings as shown below: and we get this image: Duplicate () Layer 2 and select the text with the Magic Wand () tool and Global () Flood Mode. Apply the Cell Texture effect (Effects -> Render -> Cell Texture) to the top layer with the settings below: then apply the Emboss+ effect (Effects -> Stylize -> Emboss+) with Angle 0 and Height 2: and use Auto-Level () adjustment (Adjustments -> Auto-Level). Set () the Layer Blending Mode to Glow and set the Opacity to 128. Deselect () and apply AA's Assistant effect (Effects -> Object -> AA's Assistant) with default settings, repeat if necessary (Ctrl+F). Merge () both Layer 2. Duplicate () Layer 2 and make it Black and White (Ctrl+Shift+G). Apply AA's Assistant effect with default settings, repeat if necessary (Ctrl+F). Select the text with the Magic Wand () tool and run Neon Edges effect (Effects -> Ctylize -> Neon Edges) with Thickness 14 and Glow Intencity 50: Select the dark text with a Magic Wand () tool (Tolerance: 25-35%). Edit the selection if the contours of the letters are touching. Set the Primary color to A54F38 and fill () the text in the top Layer 2. Invert selection (Ctrl+I) and cut (Ctrl+X) the selected part of the image. Duplicate () top Layer 2 and select the text with the Magic Wand (). Apply the Cell Texture effect with Sell size 30 and Foreground color R=105, G=40, B= 25. Apply the Emboss+ effect with Angle 0 and Height 1. Set () the Layer Blend mode to Glow. Merge () the top two Layers 2. Apply the Bevel Object effect (Effects -> Object -> Bevel Object) with Depth 2: Deselect () and apply AA's Assistant effect. Repeat (Ctrl+F) AA's Assistant effect if necessary. Go to the bottom Layer 2 and apply the Bevel Object effect with Depth 3. (Apply AA's Assistant effect if necessary.) Turn on the Background layer and merge () all layers. And we are done. Of course our result is different from the result of PS tutorial, but I did not set myself the task to achieve full compliance. In my opinion, the last image looks more realistic.
  32. 1 point
    Actually, for the HelpButton, you should just use the override, instead of assigning a method to the event. protected override void OnHelpButtonClicked(CancelEventArgs e) { e.Cancel = true; base.OnHelpButtonClicked(e); Services.GetService<IShellService>().LaunchUrl(null, "https://www.getpaint.net/redirect/plugins.html"); } And do the same for any other Events on the Form.
  33. 1 point
    No, the installer is only good for the classic version. The moderators have not fixed the link on the first post yet, so use this zip file until they do: Vandermotten.PaintDotNetEffects_DLLs.zip
  34. 1 point
    The YouTube algorithm is working well tonight...
  35. 1 point
    Thanks for developing this plug-in. I used it to make backgrounds for my art website from my art and some theme-supplied photos. Here's the home page cover -- before and after
  36. 1 point
    Or I coulda used Classic (beta) but would have meant closing the Store version if I wanted that shadow when working on an image blah blah ... Was no big thing. The money I spent on the Store version is still the best monies spent over t'internet
  37. 1 point
    Nice comparison images @Vagabondi The versatility of all these plugins still amazes me... ☺️
  38. 1 point
  39. 1 point
    At 255 your opacity is set to completely solid... for every other software on the planet. That's why you need to ask at a forum dedicated to the game in question. Obviously, they're using something other than normal opacity to determine how solid their textures are. We don't know what that is... and until we know, we can't help you.
  40. 1 point
    I've just added the file to the first post in this thread:
  41. 1 point
  42. 1 point
    Locking this thread -- Final build inbound. Also, there was a memory leak that I fixed for the final release.
  43. 1 point
    Far centering objects, there are a few align plugins. Just search "align" at the Plugin Index. The same search will also give you TR's PseudoSnap.
  44. 1 point
    #pdnpi, #pdnpi-iframe { margin: 0; padding: 0; border: none; width: 100%; height: 1200px; overflow: hidden; } The Plugin Index in all its forms is free. If you would like to show your support, you can always buy the authors a coffee by clicking this link... Donate For offline viewing, you can download a PDF version using this button.... PDF version
  45. 1 point
  46. 1 point
    ~ Wild West ~ No clipart, no stock - the only "real" thing is the Tinypic Goodbye which I modified for the poster. Thank you @lynxster4 for the horse shapes. The card symbols in the Poker Room are unicode. Enjoy! Gone For Good Lucky Night Three Of A Kind Take A Chance Trip Poker Room Hat Shop Thanks for your visit. Take chances and be lucky, you desperado.
  47. 1 point
    I'll add something to the upcoming update -- 4.2.11 -- to turn off the use of NTFS transactions. It'll be either a command-line arg or an AppSetting (registry key, essentially, but also controllable via command-line). I have no idea if this will help, but it will help troubleshoot if that's the cause. I'll be putting out the beta this coming week and there will be information in the release notes about it.
  48. 1 point
    I'm already at stage 4... send help! (and, by 'help' I mean 'pizza')
  49. 1 point
    Recently I took a picture of a deer standing next to my garage: Unfortunately, the deer was slightly out of focus and the ground is also blurry. In order to fix the photograph, I did a TON of research and I came up with the best way to sharpen a blurry photograph. I will now share my technique with you. Here are the absolute best steps to sharpen a photograph: Step 1: Take another photograph. Make sure the object is in focus this time. If possible, use a tripod to hold the camera still. Results: As you can see, the deer is now in focus and the ground is no longer blurry. You may think that using the "Photo > Sharpen" effect will fix blurry photographs and it will to a small degree. However, you can trust me for I have done the research: the absolute BEST way to sharpen a blurry photograph is to take another photograph! Just be sure to hold the camera still, increase your aperture setting, and focus properly this time. I hope this tutorial helps you.
  50. 1 point
    ::keywords::Crystals|pyramids|extrude ::Menu::Effects/Iterative lines ::Original release date:: 4th October 2014 ::Author:: Red ochre (John Robbins) helped by TechnoRobbo (Rob Tauler) ::dll name:: Facet Should work on both Pdn3.5.11 and Pdn4.0.3+ Facet turns an image into various crystal/pyramid like shapes. Hopefully the images below explain better! Now in my pack:Red ochre v10 plugin pack Many thanks to TechnoRobbo for his help getting this one to work correctly. Please post any images you create using it, in this thread. I'd love to see what you can all come up with! http://i.imgur.com/ArISmnm.png http://i.imgur.com/pBkopmN.png http://i.imgur.com/QUWHIfD.png http://i.imgur.com/Zb4XY0A.png http://i.imgur.com/THNVzws.png http://i.imgur.com/RFKXpGv.png http://i.imgur.com/NRiswjq.png