对PNG图进行计算,原理是对某一像素周围九个点的RGB值进行平均,然后将平均值赋给该像素。 if ((Int16)(bytes[4 * (j - 1) + (i - 1) * bmd.Stride + 2]) != 0)
{
alpha = ((Int16)(bytes[4 * (j - 1) + (i - 1) * bmd.Stride + 3]) + (Int16)(bytes[4 * (j - 1) + i * bmd.Stride + 3]) +
(Int16)(bytes[4 * (j - 1) + (i + 1) * bmd.Stride + 3]) + (Int16)(bytes[4 * j + (i - 1) * bmd.Stride + 3]) +
(Int16)(bytes[4 * j + i * bmd.Stride + 3]) + (Int16)(bytes[4 * j + (i + 1) * bmd.Stride + 3]) +
(Int16)(bytes[4 * (j + 1) + (i - 1) * bmd.Stride + 3]) + (Int16)(bytes[4 * (j + 1) + i * bmd.Stride + 3]) +
(Int16)(bytes[4 * (j + 1) + (i + 1) * bmd.Stride + 3])) / 9;
}
else
{
alpha = 0;
}
blue = ((Int16)(bytes[4 * (j - 1) + (i - 1) * bmd.Stride ]) + (Int16)(bytes[4 * (j - 1) + i * bmd.Stride ]) +
(Int16)(bytes[4 * (j - 1) + (i + 1) * bmd.Stride ]) +(Int16)(bytes[4 * j + (i - 1) * bmd.Stride ]) +
(Int16)(bytes[4 * j + i * bmd.Stride ]) + (Int16)(bytes[4 * j + (i + 1) * bmd.Stride ]) +
(Int16)(bytes[4 * (j + 1) + (i - 1) * bmd.Stride ]) + (Int16)(bytes[4 * (j + 1) + i * bmd.Stride ]) +
(Int16)(bytes[4 * (j + 1) + (i + 1) * bmd.Stride ])) / 9; green = ((Int16)(bytes[4 * (j - 1) + (i - 1) * bmd.Stride + 1]) + (Int16)(bytes[4 * (j - 1) + i * bmd.Stride + 1]) +
(Int16)(bytes[4 * (j - 1) + (i + 1) * bmd.Stride + 1]) + (Int16)(bytes[4 * j + (i - 1) * bmd.Stride + 1]) +
(Int16)(bytes[4 * j + i * bmd.Stride + 1]) + (Int16)(bytes[4 * j + (i + 1) * bmd.Stride + 1]) +
(Int16)(bytes[4 * (j + 1) + (i - 1) * bmd.Stride + 1]) + (Int16)(bytes[4 * (j + 1) + i * bmd.Stride + 1]) +
(Int16)(bytes[4 * (j + 1) + (i + 1) * bmd.Stride + 1])) / 9; red = ((Int16)(bytes[4 * (j - 1) + (i - 1) * bmd.Stride + 2]) + (Int16)(bytes[4 * (j - 1) + i * bmd.Stride + 2]) +
(Int16)(bytes[4 * (j - 1) + (i + 1) * bmd.Stride + 2]) + (Int16)(bytes[4 * j + (i - 1) * bmd.Stride + 2]) +
(Int16)(bytes[4 * j + i * bmd.Stride + 2]) + (Int16)(bytes[4 * j + (i + 1) * bmd.Stride + 2]) +
(Int16)(bytes[4 * (j + 1) + (i - 1) * bmd.Stride + 2]) + (Int16)(bytes[4 * (j + 1) + i * bmd.Stride + 2]) +
(Int16)(bytes[4 * (j + 1) + (i + 1) * bmd.Stride + 2])) / 9; bytes[4 * j + i * bmd.Stride + 3] = Convert.ToByte(alpha );
bytes[4 * j + i * bmd.Stride + 2] = Convert.ToByte(red);
bytes[4 * j + i * bmd.Stride + 1] = Convert.ToByte(green);
bytes[4 * j + i * bmd.Stride ] = Convert.ToByte(blue);
处理前PNG图像:处理后:
{
alpha = ((Int16)(bytes[4 * (j - 1) + (i - 1) * bmd.Stride + 3]) + (Int16)(bytes[4 * (j - 1) + i * bmd.Stride + 3]) +
(Int16)(bytes[4 * (j - 1) + (i + 1) * bmd.Stride + 3]) + (Int16)(bytes[4 * j + (i - 1) * bmd.Stride + 3]) +
(Int16)(bytes[4 * j + i * bmd.Stride + 3]) + (Int16)(bytes[4 * j + (i + 1) * bmd.Stride + 3]) +
(Int16)(bytes[4 * (j + 1) + (i - 1) * bmd.Stride + 3]) + (Int16)(bytes[4 * (j + 1) + i * bmd.Stride + 3]) +
(Int16)(bytes[4 * (j + 1) + (i + 1) * bmd.Stride + 3])) / 9;
}
else
{
alpha = 0;
}
blue = ((Int16)(bytes[4 * (j - 1) + (i - 1) * bmd.Stride ]) + (Int16)(bytes[4 * (j - 1) + i * bmd.Stride ]) +
(Int16)(bytes[4 * (j - 1) + (i + 1) * bmd.Stride ]) +(Int16)(bytes[4 * j + (i - 1) * bmd.Stride ]) +
(Int16)(bytes[4 * j + i * bmd.Stride ]) + (Int16)(bytes[4 * j + (i + 1) * bmd.Stride ]) +
(Int16)(bytes[4 * (j + 1) + (i - 1) * bmd.Stride ]) + (Int16)(bytes[4 * (j + 1) + i * bmd.Stride ]) +
(Int16)(bytes[4 * (j + 1) + (i + 1) * bmd.Stride ])) / 9; green = ((Int16)(bytes[4 * (j - 1) + (i - 1) * bmd.Stride + 1]) + (Int16)(bytes[4 * (j - 1) + i * bmd.Stride + 1]) +
(Int16)(bytes[4 * (j - 1) + (i + 1) * bmd.Stride + 1]) + (Int16)(bytes[4 * j + (i - 1) * bmd.Stride + 1]) +
(Int16)(bytes[4 * j + i * bmd.Stride + 1]) + (Int16)(bytes[4 * j + (i + 1) * bmd.Stride + 1]) +
(Int16)(bytes[4 * (j + 1) + (i - 1) * bmd.Stride + 1]) + (Int16)(bytes[4 * (j + 1) + i * bmd.Stride + 1]) +
(Int16)(bytes[4 * (j + 1) + (i + 1) * bmd.Stride + 1])) / 9; red = ((Int16)(bytes[4 * (j - 1) + (i - 1) * bmd.Stride + 2]) + (Int16)(bytes[4 * (j - 1) + i * bmd.Stride + 2]) +
(Int16)(bytes[4 * (j - 1) + (i + 1) * bmd.Stride + 2]) + (Int16)(bytes[4 * j + (i - 1) * bmd.Stride + 2]) +
(Int16)(bytes[4 * j + i * bmd.Stride + 2]) + (Int16)(bytes[4 * j + (i + 1) * bmd.Stride + 2]) +
(Int16)(bytes[4 * (j + 1) + (i - 1) * bmd.Stride + 2]) + (Int16)(bytes[4 * (j + 1) + i * bmd.Stride + 2]) +
(Int16)(bytes[4 * (j + 1) + (i + 1) * bmd.Stride + 2])) / 9; bytes[4 * j + i * bmd.Stride + 3] = Convert.ToByte(alpha );
bytes[4 * j + i * bmd.Stride + 2] = Convert.ToByte(red);
bytes[4 * j + i * bmd.Stride + 1] = Convert.ToByte(green);
bytes[4 * j + i * bmd.Stride ] = Convert.ToByte(blue);
处理前PNG图像:处理后:
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货