LEADTOOLS使用教程:圖像的幾何變換
1. 高級(jí)縮放類
調(diào)整已有圖像的大小,并將調(diào)整后的圖像設(shè)為目標(biāo)圖像,原始圖像不變。 |
|
將圖像調(diào)整到一個(gè)新的寬和高。 |
以下為使用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: // 創(chuàng)建目標(biāo)圖像 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: // 將原始圖像調(diào)整大小 21: ResizeCommand command = new ResizeCommand(); 22: command.DestinationImage = destImage; 23: command.Flags = RasterSizeFlags.Bicubic; 24: command.Run(srcImage); 25: 26: // 將調(diào)整后的圖像保存至磁盤 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. 高級(jí)裁剪類
|
裁剪當(dāng)前圖像,刪除邊緣的空白區(qū)域 |
|
若使用了AutoCropCommand類,可以使用此類獲取裁剪時(shí)使用的矩形。 |
|
使用定義好的矩形裁剪圖像。 |
以下為使用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: // 準(zhǔn)備command 7: AutoCropCommand command = new AutoCropCommand(); 8: 9: //在誤差20內(nèi)自動(dòng)裁剪圖像 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: // 準(zhǔn)備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. 其他的高級(jí)變換類
類名 |
說(shuō)明 |
以軸心點(diǎn)為中心,沿著彎曲的平面扭曲當(dāng)前圖像。這個(gè)中心點(diǎn)必須定義在圖像內(nèi)或區(qū)域內(nèi)。若圖像有一個(gè)區(qū)域,變換只應(yīng)用于此區(qū)域。 這個(gè)類在Raster Pro及以上工具包中可用。 |
|
旋轉(zhuǎn)和翻轉(zhuǎn)圖像數(shù)據(jù),以獲取想要的查看視角。 |
|
|
繞著一個(gè)圓柱扭曲圖像。此命令只在Raster Pro及以上工具包中可用。 |
|
旋轉(zhuǎn)特定的圖像并拉直。 |
|
從頂端到底端或從左到右翻轉(zhuǎn)RasterImage |
|
使用振幅數(shù)組通過(guò)所畫的波形剪切圖像。此命令僅在Raster Pro及以上工具包中可用。 |
|
通過(guò)振幅數(shù)組和旋轉(zhuǎn)角度中指定的波形,扭曲圖像。此命令僅在Raster Pro及以上工具包中可用。 |
將圖像包裹在一個(gè)以曲線塑造的3D平面上。此命令只在Raster Pro及以上工具包中可用。 原圖: 應(yīng)用此效果后: |
|
將圖像按著曲線塑造的3D平面的半徑包裹。此命令只在Raster Pro及以上工具包中可用。 原始圖像: 應(yīng)用此效果后: |
|
使圖片看起來(lái)像出自一個(gè)印象派畫家之手。此命令只在Raster Pro及以上工具包中可用。 |
|
將圖像沿著Z軸放置在平行平面,并朝著中心點(diǎn)彎曲。此命令只在Raster Pro及以上工具包中可用。 原始圖像: 使用后的效果: |
|
將圖像沿著Z軸放置在平行平面。此命令只在Raster Pro及以上工具包中可用。 原始圖像: 使用后的效果: |
|
|
將圖像從矩形轉(zhuǎn)換為極坐標(biāo),反之亦然。此命令只在Raster Pro及以上工具包中可用。 |
|
通過(guò)將圖像向中心擠壓或從中心向外擴(kuò)展來(lái)彎曲圖像。此命令只在Raster Pro及以上工具包中可用。 |
|
通過(guò)繞著中心點(diǎn)旋轉(zhuǎn)像素模糊圖像。此命令只在Raster Pro及以上工具包中可用。 |
|
使用從中心輻射的波形扭曲圖像。此命令只在Raster Pro及以上工具包中可用。 |
|
在同心圓內(nèi)扭曲圖像。此命令只在Raster Pro及以上工具包中可用。 |
|
以指定的度數(shù)旋轉(zhuǎn)圖像。此命令只在Raster Pro及以上工具包中可用。 |
|
通過(guò)改變ViewPerspective旋轉(zhuǎn)RasterImage。 |
|
以平行四邊形的方式移動(dòng)圖像的角。 |
|
繞著一個(gè)3D球形,扭曲圖像。此命令只在Raster Pro及以上工具包中可用。 |
|
根據(jù)旋轉(zhuǎn)角度旋轉(zhuǎn)圖像,以產(chǎn)生漩渦的模式。此命令只在Raster Pro及以上工具包中可用。 |
|
可完成特定格式的無(wú)損轉(zhuǎn)換。 |
沿著Z軸在隧道中放置圖像。此命令只在Raster Pro及以上工具包中可用。 原始圖像: 使用后的效果: |
|
|
使用特定角度特定波形的兩個(gè)垂直波扭曲圖像。此命令只在Raster Pro及以上工具包中可用。 |
|
創(chuàng)建細(xì)線,以特定的角度引導(dǎo)它,作用于被影響的圖像上。此命令只在Raster Pro及以上工具包中可用。 |
|
從特定中心點(diǎn)開(kāi)始沿著半徑線模糊圖像。此命令只在Raster Pro及以上工具包中可用。 |
|
使用從特定中心放大的波形扭曲圖像。此命令只在Raster Pro及以上工具包中可用。 |
4. 低級(jí)縮放方法
ResizeBuffer 方法 |
使用Start方法將緩沖區(qū)調(diào)整為指定的新大小。
|
Start 方法 |
為ResizeBuffer(Byte[],Int32,Int32,Int32)方法建立信息。
|
Stop 方法 |
清除Start方法中所有的數(shù)據(jù)變量和緩沖區(qū)。
|
轉(zhuǎn)載來(lái)自于http://blog.gcpowertools.com.cn/post/2014/09/12/geometric-transformations-by-leadtools.aspx