本文介绍了silverlight中的图像处理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我试图在裁剪图像后对应用程序中的图像进行锐化过滤。我正在使用的功能是没有给出预期的输出,图像中没有反映出任何变化,请检查功能我错在哪里。 public static WriteableBitmap sharpen(WriteableBitmap image) { WriteableBitmap sharpenImage = new WriteableBitmap(image); ; int filterWidth = 4 ; int filterHeight = 4 ; int w = image.PixelWidth; int h = image.PixelHeight; double [,] filter = new double [filterWidth,filterHeight]; filter [ 0 , 0 ] = filter [ 0 , 1 ] = filter [ 0 , 2 ] = filter [ 1 , 0 ] = filter [ 1 , 2 ] =过滤器[ 2 , 0 ] =过滤器[ 2 , 1 ] = filter [ 2 , 2 ] = -1; filter [ 1 , 1 ] = 9 ; double factor = 1 。 0 ; double bias = 0 。 0 ; 颜色[,]结果= 新颜色[image.PixelWidth,image.PixelHeight]; for ( int x = 0 ; x < w; ++ x) { for ( int y = 0 ; y < ; h; ++ y) { double red = 0 。 0 ,green = 0 。 0 ,blue = 0 。 0 ,any = 0 。 0 ; Color imageColor = image.GetPixel(x,y); for ( int filterX = 0 ; filterX < filterWidth; filterX ++) { for ( int filterY = 0 ; filterY < filterHeight; filterY ++) { int imageX =(x - filterWidth / 2 + filterX + w)%w; int imageY =(y - filterHeight / 2 + filterY + h)%h; any + = imageColor.A * filter [filterX,filterY]; red + = imageColor.R * filter [filterX,filterY]; green + = imageColor.G * filter [filterX,filterY]; blue + = imageColor.B * filter [filterX,filterY]; } byte a = Convert.ToByte(Math.Min(Math.Max(( int )(因子*任何+偏见), 0 ), 255 )); byte r = Convert.ToByte(Math.Min(Math.Max(( int ) (因子*红色+偏差), 0 ), 255 )); byte g = Convert.ToByte(Math.Min(Math.Max(( int ) (因子*绿色+偏见), 0 ), 255 )); byte b = Convert.ToByte(Math.Min(Math.Max(( int ) (因子*蓝色+偏见), 0 ), 255 )); result [x,y] = Color.FromArgb(a,r,g,b); } } } for ( int i = 0 ; i < w; ++ i) { for ( int j = 0 ; j < h; ++ j) { sharpenImage.SetPixel(i,j,result [i,j]); } } return sharpenImage; } 解决方案 Hi,I am trying to put sharpen filter over an image in my application after cropping the image. The function i am using is not giving expected output , no changes are reflected in the image,Please check the function where does i am wrong.public static WriteableBitmap sharpen(WriteableBitmap image) { WriteableBitmap sharpenImage = new WriteableBitmap(image); ; int filterWidth = 4; int filterHeight = 4; int w = image.PixelWidth; int h = image.PixelHeight; double[,] filter = new double[filterWidth, filterHeight]; filter[0, 0] = filter[0, 1] = filter[0, 2] = filter[1, 0] = filter[1, 2] = filter[2, 0] = filter[2, 1] = filter[2, 2] = -1; filter[1, 1] = 9; double factor = 1.0; double bias = 0.0; Color[,] result = new Color[image.PixelWidth, image.PixelHeight]; for (int x = 0; x < w; ++x) { for (int y = 0; y < h; ++y) { double red = 0.0, green = 0.0, blue = 0.0,any=0.0; Color imageColor = image.GetPixel(x, y); for (int filterX = 0; filterX < filterWidth; filterX++) { for (int filterY = 0; filterY < filterHeight; filterY++) { int imageX = (x - filterWidth / 2 + filterX + w) % w; int imageY = (y - filterHeight / 2 + filterY + h) % h; any += imageColor.A * filter[filterX, filterY]; red += imageColor.R * filter[filterX, filterY]; green += imageColor.G * filter[filterX, filterY]; blue += imageColor.B * filter[filterX, filterY]; } byte a = Convert.ToByte( Math.Min(Math.Max((int)(factor * any + bias), 0), 255)); byte r = Convert.ToByte(Math.Min(Math.Max((int)(factor * red + bias), 0), 255)); byte g = Convert.ToByte(Math.Min(Math.Max((int)(factor * green + bias), 0), 255)); byte b = Convert.ToByte(Math.Min(Math.Max((int)(factor * blue + bias), 0), 255)); result[x, y] = Color.FromArgb(a,r, g, b); } } } for (int i = 0; i < w; ++i) { for (int j = 0; j < h; ++j) { sharpenImage.SetPixel(i, j, result[i, j]); } } return sharpenImage; } 解决方案 这篇关于silverlight中的图像处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!