ImageMagick MagickAutoOrientImage

最近在用imageMagick 进行图像处理,主要是lua ffi调用ImageMagick, 发现MagickAutoOrientImage在旧版本中不存在,目前可以确定的是这个函数在ImageMagick 6.8.9中才出现。

1WandExport MagickBooleanType MagickAutoOrientImage(MagickWand *wand) 2{ 3 4 Image 5 *orient_image; 6 7 assert(wand != (MagickWand *) NULL); 8 assert(wand->signature == WandSignature); 9 if (wand->debug != MagickFalse) 10 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 11 if (wand->images == (Image *) NULL) 12 ThrowWandException(WandError,"ContainsNoImages",wand->name); 13 orient_image=AutoOrientImage(wand->images,wand->images->orientation, 14 wand->exception); 15 if (orient_image == (Image *) NULL) 16 return(MagickFalse); 17 ReplaceImageInList(&wand->images,orient_image); 18 return(MagickTrue); 19}

所以就要看AutoOrientImage的实现来手动实现

1MagickExport Image *AutoOrientImage(const Image *image, 2 const OrientationType orientation,ExceptionInfo *exception) 3{ 4 Image 5 *orient_image; 6 7 assert(image != (const Image *) NULL); 8 assert(image->signature == MagickSignature); 9 assert(exception != (ExceptionInfo *) NULL); 10 assert(exception->signature == MagickSignature); 11 orient_image=(Image *) NULL; 12 switch(orientation) 13 { 14 case UndefinedOrientation: 15 case TopLeftOrientation: 16 default: 17 { 18 orient_image=CloneImage(image,0,0,MagickTrue,exception); 19 break; 20 } 21 case TopRightOrientation: 22 { 23 orient_image=FlopImage(image,exception); 24 break; 25 } 26 case BottomRightOrientation: 27 { 28 orient_image=RotateImage(image,180.0,exception); 29 break; 30 } 31 case BottomLeftOrientation: 32 { 33 orient_image=FlipImage(image,exception); 34 break; 35 } 36 case LeftTopOrientation: 37 { 38 orient_image=TransposeImage(image,exception); 39 break; 40 } 41 case RightTopOrientation: 42 { 43 orient_image=RotateImage(image,90.0,exception); 44 break; 45 } 46 case RightBottomOrientation: 47 { 48 orient_image=TransverseImage(image,exception); 49 break; 50 } 51 case LeftBottomOrientation: 52 { 53 orient_image=RotateImage(image,270.0,exception); 54 break; 55 } 56 } 57 if (orient_image != (Image *) NULL) 58 orient_image->orientation=TopLeftOrientation; 59 return(orient_image); 60}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

ImageMagick MagickAutoOrientImage - HelloWorld