找回密码
 立即注册

QQ登录

只需一步,快速开始

leadcom

论坛元老

24

主题

96

帖子

2万

积分

论坛元老

积分
27812

活字格认证

leadcom
论坛元老   /  发表于:2015-7-30 12:08  /   查看:20532  /  回复:19
帮帮忙,如何实现图片中的转换功能。

本帖子中包含更多资源

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

x

19 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2015-7-30 16:29:00
沙发
回复 1楼leadcom的帖子

颜色值在随机安装Demo中有参考:C:\LEADTOOLS 19\Examples\DotNet\CS\MainDemo:

本帖子中包含更多资源

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

x
回复 使用道具 举报
leadcom
论坛元老   /  发表于:2015-7-31 12:15:00
板凳
我测试了一下,通过GrayScaleCommand命令对图像进行灰度处理。这个命令只支持8,12,16比特,这个与我的功能命令中的16级,256级灰度之前有有什么联系呢,
如果产生16级,256级灰度图像,
还有,将图片转换成16、256、真彩色,是不是只能对于BMP类型的图片,
我是这样操作的。
  1.      
  2.                    System.IO.MemoryStream ms=new System.IO.MemoryStream ();
  3.                         RasterCodecs codes = new RasterCodecs();
  4.                         codes.Save(RasterImage, ms, Leadtools.RasterImageFormat.Bmp,4);
  5.                         RasterCodecs newCodes = new RasterCodecs();
  6.                         RasterImage = newCodes.Load(ms).Clone();
  7.                         codes.Dispose();
  8.                         newCodes.Dispose();
复制代码
如何真正的转换成16色,156色以及真彩色,还令多多指教,我把mainDemo都看了一下,好像没有这个功能?
回复 使用道具 举报
leadcom
论坛元老   /  发表于:2015-8-3 10:46:00
地板
麻烦大虾指点指点,急等着
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2015-8-3 11:17:00
5#
回复 4楼leadcom的帖子

您好,
您所指的16级、256级灰度其实就是4、8位色深,我给您解释一下色深和灰度级的定义。
位深通常意义上来说指的是每个像素上所含有的颜色个数,如1bit指的是含有2个颜色在每个像素上,所以1bit就是黑白图。同理16级灰度指的就是每个像素上有16个颜色,转换到位深就是4bit。256级转换到位深就是8bit,指的是2的8次方。每个像素上的颜色越多图像显示越清晰颜色越接近真实。
所以GrayScaleCommand支持的8、12、16就是指的这个意思。
当然您可以使用ColorResolutionCommand 来指定具体的颜色位深,这个命令是转换各种位深的命令。
256色的例子:
// Load the source image from disk
   RasterImage image = codecs.Load(srcFileName);

   // First color-res it to 8 bits per pixel  using the Netscape palette into a seperate image
   ColorResolutionCommand cmd = new ColorResolutionCommand();
   cmd.Mode = ColorResolutionCommandMode.CreateDestinationImage;
   cmd.BitsPerPixel = 8;
   cmd.Order = RasterByteOrder.Rgb;
   cmd.DitheringMethod = RasterDitheringMethod.None;
   cmd.PaletteFlags = ColorResolutionCommandPaletteFlags.UsePalette;
   cmd.SetPalette(RasterPalette.Netscape());
   cmd.Run(image);
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.Rgb;
   cmd.DitheringMethod = RasterDitheringMethod.None;
   cmd.PaletteFlags = ColorResolutionCommandPaletteFlags.Optimized;
   cmd.Run(image);

以上,希望能帮助到您。
回复 使用道具 举报
leadcom
论坛元老   /  发表于:2015-8-11 15:47:00
6#
我看了,garyScaleCommand里面没有16级灰度的处理方法。只有256级的。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-8-12 11:52:00
7#
回复 6楼leadcom的帖子

GrayscaleCommand 仅支持 8、12和16位色深。
https://www.leadtools.com/help/l ... ayscalecommand.html

请问5#代码和您的需求有哪些不符合的地方?
回复 使用道具 举报
leadcom
论坛元老   /  发表于:2015-8-12 12:45:00
8#
按5#所说的话:16级灰度就等于4位(bit),
而grayscalecommand只支持8bit,12bit,16bit.
所有就不能转换为4bit的灰度。
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2015-8-12 13:46:00
9#
回复 8楼leadcom的帖子

您好,5楼的代码使用的是ColorResolutionCommand ,并不是GrayScaleCommand,
ColorResolutionCommand 可以将图片转换为任意位深,请问您说的不支持是指的什么地方不支持?
5楼给出了示例代码,其中就有转换为4bit的例子。

以上 ,谢谢。
回复 使用道具 举报
leadcom
论坛元老   /  发表于:2015-8-13 09:18:00
10#
ColorResolutionCommand 这个是任意位深,他支持转换成灰度的吗?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部