找回密码
 立即注册

QQ登录

只需一步,快速开始

AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2015-8-13 09:44:00
11#
回复 10楼leadcom的帖子

您好,

灰度的等级,代表的是黑白图像的亮度,如果您指的是如何调整黑白图像亮度的话,可以使用GrayScaleCommand,
如果您指的是彩色图片本身的色彩数量的话,请使用ColorResolutionCommand。
灰度等级定义:一般,像素值量化后用一个字节(8b)来表示。如把有黑-灰-白连续变化的灰度值量化为256个灰度级,灰度值的范围为0~255,表示亮度从深到浅,对应图像中的颜色为从黑到白。黑白照片包含了黑白之间的所有的灰度色调,每个像素值都是介于黑色和白色之间的256种灰度中的一种。

您指的灰度等级是否是如上描述?
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2015-8-13 11:27:00
12#
回复 10楼leadcom的帖子

另外补充一下,图像即位图图像,有一系列的象元阵列组成。按照图像的类型,可以分为二值图,灰度图等。灰度图指的是该图像的象元用8位数据表示的图像,2的八次方就是256,因此图像共有256种灰度等级或称之为灰度色域。
8位灰度图指的就是我们一般称之为的灰度图,通俗来讲,8位即表示象元的数据位数,比如11101001就是一个8位数据组成的象元,很多这种象元规则阵列排在一起就是8位灰度图。
灰度图没有颜色,只有256种不同的灰度。
向Photoshop中,将一张图片转换为灰度图之后,菜单中也只有8bit\、16bit、32bit的选择,其中8bit就是普通意义上的256级灰度图,16bit以上的指的是使用了RGBa来存储的灰度图,a代表Alpha通道,表示透明度,对于灰度图来说16bit以上除了多了透明度以外只有体积变大了,并不存在与8bit太大的区别。
所以GrayScaleCommand是灰度转换命令,支持8、12、16,针对的也是黑白图片,对于彩色图片来说如果想转换位数就要使用ColorResolutionCommand了。
这是这两个命令的最大区别。
回复 使用道具 举报
leadcom
论坛元老   /  发表于:2015-8-20 14:38:00
13#
我现在只需要将一张图片转换成16级的灰度图片,其它的16色,256色的的转换功能已经可以了。
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2015-8-20 17:24:00
14#
回复 13楼leadcom的帖子

您好,请使用5楼的第二个例子,只需要将RasterByteOrder设置为Gray灰度即可。
16色的例子:
// Now color-res the image in-place to 4-bits per pixel using the Optimized palette
   cmd.Mode = ColorResolutionCommandMode.InPlace;
   cmd.BitsPerPixel = 4;
   cmd.Order = RasterByteOrder.Gray;
   cmd.DitheringMethod = RasterDitheringMethod.None;
   cmd.PaletteFlags = ColorResolutionCommandPaletteFlags.Optimized;
   cmd.Run(image);
这个就是转换16色的图片,也就是意义上的16级灰度。
回复 使用道具 举报
leadcom
论坛元老   /  发表于:2015-8-20 17:49:00
15#
这个就是执行完这段代码的效果,怎么还有彩色的呢?
cmd.Mode = ColorResolutionCommandMode.InPlace;
   cmd.BitsPerPixel = 4;
   cmd.Order = RasterByteOrder.Gray;
   cmd.DitheringMethod = RasterDitheringMethod.None;
   cmd.PaletteFlags = ColorResolutionCommandPaletteFlags.Optimized;
   cmd.Run(image);



256级灰度是这样的了,跟16级灰度的也差太多了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2015-8-24 16:46:00
16#
回复 15楼leadcom的帖子

您好, 问题已经再现,我这边正在写一个例子帮助您来完成这个需求。
例子写好后我会将关键代码贴到帖子中,请稍等。
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2015-8-24 17:58:00
17#
回复 15楼leadcom的帖子

您好,
关于该问题,您可以先使用GrayscaleCommand将图片转为灰度图,8bit就是256级灰度图。
完成后再用ColorResolutionCommand 将图片转为4bit(16级)灰度图就可以了。
代码就是在GrayscaleCommand之后调用我在14楼给的例子即可。
原因是彩色图片也有16色和256色之分,所以直接用ColorResolutionCommand 会将图片转换为16色图片。
所以先将图片变为黑白,然后在进行转换即可。
以上,谢谢。
回复 使用道具 举报
leadcom
论坛元老   /  发表于:2015-8-31 10:43:00
18#
在图片执行完转换成灰度图片的时候,rasterimage的isgray属性应该为true。
但实际上转换了之后这个属性值根本没有变化。请问是什么原因。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-8-31 18:02:00
19#
回复 18楼leadcom的帖子

抱歉,让你久等了。

能否把你的代码发给我,我用于测试问题。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-9-8 09:31:00
20#
回复 18楼leadcom的帖子

请问问题是否解决?

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部