[函數名稱]
圖像對比度調整函數ContrastAdjustProcess(WriteableBitmap
src, doublecontrastValue)
[函數代碼]
///<summary>
///
Contrast adjust process.
///</summary>
///<param
name="src">Source image.</param>
name="contrastValue">Contrast value, from -1 to 1.</param>
///<returns></returns>
publicstaticWriteableBitmap
ContrastAdjustProcess(WriteableBitmap src,double
contrastValue)////6對比度調整
{
if(src!=null
)
{
int
w = src.PixelWidth;
h = src.PixelHeight;
WriteableBitmap
contrastImage =newWriteableBitmap(w,h);
byte[]
temp = src.PixelBuffer.ToArray();
for
(int i = 0; i < temp.Length; i += 4)
temp[i] =Convert.ToByte((((temp[i]
- 127.5) * contrastValue + temp[i]) > 255 ? 255 : ((temp[i] - 127.5) * contrastValue + temp[i])) < 0 ? 0 : (((temp[i] - 127.5) * contrastValue + temp[i]) > 255 ? 255 : ((temp[i] - 127.5) * contrastValue + temp[i])));
temp[i + 1] =Convert.ToByte((((temp[i
+ 1] - 127.5) * contrastValue + temp[i + 1]) > 255 ? 255 : ((temp[i + 1] - 127.5) * contrastValue + temp[i + 1])) < 0 ? 0 : (((temp[i + 1] - 127.5) * contrastValue + temp[i + 1]) > 255 ? 255 : ((temp[i + 1] - 127.5) * contrastValue + temp[i + 1])));
temp[i + 2] =Convert.ToByte((((temp[i
+ 2] - 127.5) * contrastValue + temp[i + 2]) > 255 ? 255 : ((temp[i + 2] - 127.5) * contrastValue + temp[i + 2])) < 0 ? 0 : (((temp[i + 2] - 127.5) * contrastValue + temp[i + 2]) > 255 ? 255 : ((temp[i + 2] - 127.5) * contrastValue + temp[i + 2])));
}
Stream
sTemp = contrastImage.PixelBuffer.AsStream();
sTemp.Seek(0,SeekOrigin.Begin);
sTemp.Write(temp, 0, w * 4 * h);
return
contrastImage;
else
returnnull;
}
}