求个简单的修改jpg/png图片的色彩为8级灰度(当图片为彩色时自动不修改,仅当图片为黑白时修改)源码,多谢!!
本帖最后由 ybaua691661 于 2013-01-19 13:08:02 编辑 求个简单的修改jpg/png图片的色彩为8级灰度(当图片为彩色时自动不修改,仅当图片为黑白时修改)源码,我想对一批图片进行批量调整然后保存为新图片.
是不是图片都能怎么直接读取灰度值? 先读取这个值,然后可以直接修改吗?
了解的大侠帮忙贴下,或者哪里有类似实例源码.多谢!!
ps.我找到个下面这个源码,请教:如果我要设置为8级灰度是不是就是Gray = 0这里修改为8 ? 另外,修改后怎么保存为新图(灰度修改了的)呢?
'==============================================灰度处理部分========================================
Sub ChangetoGray(ByVal SrcDC As Long, ByVal nx As Long, ByVal ny As Long, Optional ByVal nMaskColor As Long = -1)
Dim rgbColor As Long, Gray As Long
Dim RValue As Long, GValue As Long, BValue As Long
Dim dl As Long
rgbColor = GetPixel(SrcDC, nx, ny)
If rgbColor = nMaskColor Then GoTo Release:
RValue = GetRValue(rgbColor)
GValue = GetGValue(rgbColor)
BValue = GetBValue(rgbColor)
Gray = (9798 * RValue + 19235 * GValue + 3735 * BValue) / 32768
rgbColor = RGB(Gray, Gray, Gray)
dl = SetPixelV(SrcDC, nx, ny, rgbColor)
Release:
rgbColor = 0: Gray = 0
RValue = 0: GValue = 0: BValue = 0
dl = 0
End Sub
Sub DrawGrayBitmap(ByVal hdc As Long, ByVal nx As Long, ByVal ny As Long, ByVal nWidth As Long, ByVal nHeight As Long, Optional ByVal nMaskColor As Long = -1)
Dim i As Long, j As Long
For i = nx To nWidth
For j = ny To nHeight
Call ChangetoGray(hdc, i, j, nMaskColor)
Next j
Next i
End Sub