wknopf Posted February 9, 2010 Share Posted February 9, 2010 I know it's a lot faster to apply a color matrix, but the results are not as pleasing to the client (going from completely black to comletely white). Would you be willing to include a proportional slider/setting that enables this feature? I just stumbled across your program yesterday when my old, trusted PaintShopPro refused to load anything above 24 bit RGB, and the software I am working on created images that added an alpha byte. OK, is there anything wrong with this: int srcBytes = srcData.Stride / srcData.Width; int dstBytes = dstData.Stride / dstData.Width; byte* srcPtr = (byte*)(srcData.Scan0); byte* dstPtr = (byte*)(dstData.Scan0); for (int i = 0; i < dstData.Height; i++) { for (int j = 0; j < dstData.Width - 1; j++) { // do all the colors, the -1 is a kludge until I figure out the unused areas for (int k = 0; k < 3; k++) { if (ints == 0) { *(dstPtr + k) = *(srcPtr + k); continue; } int ires = *(srcPtr + k); if (ints > 0) { ires = *(srcPtr + k) + (((255 - *(srcPtr + k)) * ints) / 100); } else { ires = *(srcPtr + k) + ((*(srcPtr + k) * ints) / 100); } if (ires > 255) ires = 255; // int operations are not guaranteed to be +-1 if (ires < 0) ires = 0; *(dstPtr + k) = (byte)ires; } srcPtr += srcBytes; dstPtr += dstBytes; } srcPtr += srcData.Stride - srcData.Width * srcBytes; dstPtr += dstData.Stride - dstData.Width * dstBytes; } It seems to work in my app, but I haven't tested it on many pictures. thanks, Walter Link to comment Share on other sites More sharing options...
Rick Brewster Posted February 9, 2010 Share Posted February 9, 2010 I'm not sure what you're looking for here. This is not a C# developer forum. Thread Closed 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