LEADTOOLS使用教程:图像的几何变换

1. 高级缩放类

ResizeCommand 类

调整已有图像的大小,并将调整后的图像设为目标图像,原始图像不变。

SizeCommand 类

将图像调整到一个新的宽和高。


以下为使用ResizeCommand 类的代码片段(注:Resize.rar):

  1: RasterCodecs codecs = new RasterCodecs();
  2: string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp");
  3: string destFileName = Path.Combine(ImagesPath.Path, "ResizeCommand.bmp");
  4: 
  5: // 从磁盘加载原始图像
  6: RasterImage srcImage = codecs.Load(srcFileName);
  7: 
  8: // 创建目标图像
  9: RasterImage destImage = new RasterImage(
 10:    RasterMemoryFlags.Conventional,
 11:    100,
 12:    100,
 13:    srcImage.BitsPerPixel,
 14:    srcImage.Order,
 15:    srcImage.ViewPerspective,
 16:    srcImage.GetPalette(),
 17:    IntPtr.Zero,
 18:    0);
 19: 
 20: // 将原始图像调整大小
 21: ResizeCommand command = new ResizeCommand();
 22: command.DestinationImage = destImage;
 23: command.Flags = RasterSizeFlags.Bicubic;
 24: command.Run(srcImage);
 25: 
 26: // 将调整后的图像保存至磁盘
 27: codecs.Save(destImage, destFileName, RasterImageFormat.Bmp, 24);
 28: 
 29: // 清理
 30: srcImage.Dispose();
 31: destImage.Dispose();
 32: codecs.Dispose();


以下为使用SizeCommand类的代码片段(注:Resize.rar):

  1:    RasterCodecs codecs = new RasterCodecs();
  2:    string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp");
  3:    string destFileName = Path.Combine(ImagesPath.Path,"SizeCommand.bmp");
  4: 
  5:    // 从磁盘加载原始图像
  6:    RasterImage image = codecs.Load(srcFileName);
  7:    SizeCommand command = new SizeCommand();
  8:    command.Width = 128;
  9:    command.Height = 128;
 10:    command.Flags = RasterSizeFlags.Resample;
 11:    command.Run(image);
 12: 
 13:    // 将图像保存至磁盘
 14:    codecs.Save(image, destFileName, RasterImageFormat.Bmp, 8);
 15: 
 16:    // 清理
 17:    image.Dispose();
 18:    codecs.Dispose();

2. 高级裁剪类


AutoCropCommand


裁剪当前图像,删除边缘的空白区域


AutoCropRectangleCommand


若使用了AutoCropCommand类,可以使用此类获取裁剪时使用的矩形。


CropCommand


使用定义好的矩形裁剪图像。


以下为使用AutoCropCommand类的代码片段(注:CropCommand.rar):

  1: // 加载图像
  2: RasterCodecs codecs = new RasterCodecs();
  3: codecs.ThrowExceptionsOnInvalidImages = true;
  4: RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Master.jpg"));
  5: 
  6: // 准备command
  7: AutoCropCommand command = new AutoCropCommand();
  8: 
  9: //在误差20内自动裁剪图像
 10: command.Threshold = 20;
 11: 
 12: command.Run(image);


以下为使用AutoCropRectangleCommand类的代码片段(注:CropCommand.rar):

  1:    //加载图像
  2:    RasterCodecs codecs = new RasterCodecs();
  3:    codecs.ThrowExceptionsOnInvalidImages = true;
  4: 
  5:    RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Master.jpg"));
  6: 
  7:    // 准备command
  8:    AutoCropRectangleCommand command = new AutoCropRectangleCommand();
  9:    command.Threshold = 0;
 10:    command.Run(image);
 11:    MessageBox.Show("左 = " + command.Rectangle.Left.ToString() + "\n" +
 12:          "上 = " + command.Rectangle.Top.ToString() + "\n" +
 13:          "右 = " + command.Rectangle.Right.ToString() + "\n" +
 14:          "下 = " + command.Rectangle.Bottom.ToString());


以下为使用CropCommand类的代码片段(注:CropCommand.rar):

  1:    RasterCodecs codecs = new RasterCodecs();
  2:    string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp");
  3:    string destFileName = Path.Combine(ImagesPath.Path, "CropCommand.bmp");
  4: 
  5:    //从磁盘中加载原始图像
  6:    RasterImage image = codecs.Load(srcFileName);
  7: 
  8:    // 从图像的各边裁剪掉100像素
  9:    CropCommand command = new CropCommand();
 10:    command.Rectangle = new LeadRect(
 11:       100,
 12:       100,
 13:       image.Width - 100,
 14:       image.Height - 100);
 15:    command.Run(image);
 16: 
 17:    // 将其保存至磁盘
 18:    codecs.Save(image, destFileName, RasterImageFormat.Bmp, 24);
 19: 
 20:    // 清理
 21:    image.Dispose();
 22:    codecs.Dispose();

3. 其他的高级变换类 

类名

说明

BendCommand 类

以轴心点为中心,沿着弯曲的平面扭曲当前图像。这个中心点必须定义在图像内或区域内。若图像有一个区域,变换只应用于此区域。

这个类在Raster Pro及以上工具包中可用。

ChangeViewPerspectiveCommand 类

旋转和翻转图像数据,以获取想要的查看视角。


CylinderCommand 类

绕着一个圆柱扭曲图像。此命令只在Raster Pro及以上工具包中可用。


DeskewCommand 类

旋转特定的图像并拉直。


FlipCommand 类

从顶端到底端或从左到右翻转RasterImage


FreeHandShearCommand 类

使用振幅数组通过所画的波形剪切图像。此命令仅在Raster Pro及以上工具包中可用。


FreeHandWaveCommand 类

通过振幅数组和旋转角度中指定的波形,扭曲图像。此命令仅在Raster Pro及以上工具包中可用。

FreePlaneBendCommand 类

将图像包裹在一个以曲线塑造的3D平面上。此命令只在Raster Pro及以上工具包中可用。

原图:

LEADTOOLS使用教程:图像的几何变换

应用此效果后:

LEADTOOLS使用教程:图像的几何变换

FreeRadialBendCommand 类

将图像按着曲线塑造的3D平面的半径包裹。此命令只在Raster Pro及以上工具包中可用。

原始图像:

LEADTOOLS使用教程:图像的几何变换

应用此效果后:

LEADTOOLS使用教程:图像的几何变换

ImpressionistCommand 类

使图片看起来像出自一个印象派画家之手。此命令只在Raster Pro及以上工具包中可用。

PlaneBendCommand 类

将图像沿着Z轴放置在平行平面,并朝着中心点弯曲。此命令只在Raster Pro及以上工具包中可用。

原始图像:

LEADTOOLS使用教程:图像的几何变换

使用后的效果:

LEADTOOLS使用教程:图像的几何变换

PlaneCommand 类

将图像沿着Z轴放置在平行平面。此命令只在Raster Pro及以上工具包中可用。

原始图像:

LEADTOOLS使用教程:图像的几何变换

使用后的效果:

LEADTOOLS使用教程:图像的几何变换


PolarCommand 类

将图像从矩形转换为极坐标,反之亦然。此命令只在Raster Pro及以上工具包中可用。


PunchCommand 类

通过将图像向中心挤压或从中心向外扩展来弯曲图像。此命令只在Raster Pro及以上工具包中可用。


RadialBlurCommand 类

通过绕着中心点旋转像素模糊图像。此命令只在Raster Pro及以上工具包中可用。


RadialWaveCommand 类

使用从中心辐射的波形扭曲图像。此命令只在Raster Pro及以上工具包中可用。


RippleCommand 类

在同心圆内扭曲图像。此命令只在Raster Pro及以上工具包中可用。


RotateCommand 类

以指定的度数旋转图像。此命令只在Raster Pro及以上工具包中可用。


RotateViewPerspective 方法

通过改变ViewPerspective旋转RasterImage


ShearCommand 类

以平行四边形的方式移动图像的角。


SphereCommand 类

绕着一个3D球形,扭曲图像。此命令只在Raster Pro及以上工具包中可用。


SwirlCommand 类

根据旋转角度旋转图像,以产生漩涡的模式。此命令只在Raster Pro及以上工具包中可用。


RasterCodecs.Transform 方法

可完成特定格式的无损转换。

TunnelCommand 类

沿着Z轴在隧道中放置图像。此命令只在Raster Pro及以上工具包中可用。

原始图像:

LEADTOOLS使用教程:图像的几何变换

使用后的效果:

LEADTOOLS使用教程:图像的几何变换


WaveCommand 类

使用特定角度特定波形的两个垂直波扭曲图像。此命令只在Raster Pro及以上工具包中可用。


WindCommand 类

创建细线,以特定的角度引导它,作用于被影响的图像上。此命令只在Raster Pro及以上工具包中可用。


ZoomBlurCommand 类

从特定中心点开始沿着半径线模糊图像。此命令只在Raster Pro及以上工具包中可用。


ZoomWaveCommand 类

使用从特定中心放大的波形扭曲图像。此命令只在Raster Pro及以上工具包中可用。

4. 低级缩放方法

ResizeBuffer 方法

使用Start方法将缓冲区调整为指定的新大小。


Start 方法

ResizeBuffer(Byte[],Int32,Int32,Int32)方法建立信息。


Stop 方法

清除Start方法中所有的数据变量和缓冲区。



转载来自于http://blog.gcpowertools.com.cn/post/2014/09/12/geometric-transformations-by-leadtools.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值