热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

图像处理控件Aspose.Imaging最新版功能亮点示例详解

Aspose.Imagingfor.NET一种高级图像处理控件,允许开发人员创建,编辑,绘制或转换图像。图像导出和转换是API核心功能之一,它允许在不安装Photoshop应用

  Aspose.Imaging for .NET一种高级图像处理控件,允许开发人员创建,编辑,绘制或转换图像。图像导出和转换是API核心功能之一,它允许在不安装Photoshop应用程序或任何其他图像编辑器的情况下保存为AdobePhotoshop?本机格式。

  近期发布了Aspose.Imaging for .NET v19.7,支持PartialRotater类中的优化策略,支持OTG(OpenDocument图形模板),下面我们一起来探索新版中的新增功能及其工作原理。

  ▲IMAGINGNET-2926 - 将PSD保存到PDF中不提供可选择的文本

  //将文本转换为向量对象

  using (Image image=Image.Load("text.psd"))

  {

  image.Save(fileName + "text_vector.pdf", new PdfOptions());

  }//

  //老式的转换与充分光栅化

  using (Image image=Image.Load("text.psd", new PsdLoadOptions() { ReadOnlyMode=true }))

  {

  image.Save(fileName + "text_vector.pdf", new PdfOptions());

  }

  ▲IMAGINGNET-3381 - 在PartialRotater类中支持优化策略

  //为目标加载的图像设置50兆字节的内存限制

  using (var image=Image.Load(imageFilePath, new LoadOptions() { BufferSizeHint=50 })) {

  //执行RotateFlip操作

  image.RotateFlip(RotateFlipType.Rotate90FlipNone);

  //执行旋转操作

  ((RasterImage)image).Rotate(60); // rotate 60 degrees clockwise

  }

  ▲IMAGINGNET-2044 - 支持OTG (OpenDocument图形模板)

  string baseFolder="D:";

  string fileName="VariousObjectsMultiPage.otg";

  ImageOptionsBase[] optiOns={ new PngOptions(), new PdfOptions() };

  foreach (ImageOptionsBase item in options)

  {

  string inputFileName=Pathbine(baseFolder, fileName);

  string fileExt=item is PngOptions ? ".png" : ".pdf";

  string outputFileName=Pathbine(baseFolder, fileName + fileExt);

  using (Image image=Image.Load(inputFileName))

  {

  OtgRasterizationOptions otgRasterizatiOnOptions=new OtgRasterizationOptions();

  otgRasterizationOptions.PageSize=image.Size;

  item.VectorRasterizatiOnOptions=otgRasterizationOptions;

  image.Save(outputFileName, item);

  }

  }

  ▲IMAGINGNET-3442 - Bpmn SVG转换导致陌生的PNG

  using(Image image=Image.Load(“input.svg”))

  {

  image.Save(

  “output.png”,

  new PngOptions()

  {

  VectorRasterizatiOnOptions=new SvgRasterizationOptions

  {

  PageSize=image.Size,

  }

  });

  }

  ▲IMAGINGNET-3430 - 支持PDFOptions中的DPI设置

  string baseFolder=“D:

  ”;

  string fileName=“standardSize.tif”;

  string inputFileName=Pathbine(baseFolder,fileName);

  string outFileName=inputFileName +“。pdf”;

  using(Image image=Image.Load(inputFileName))

  {

  PdfOptions pdfOptiOns=new PdfOptions {PageSize=new SizeF(612,792 )};

  image.Save(outFileName,pdfOptions);

  }

  ▲IMAGINGNET-3286 - 没有从WMF到SVG的真正转换

  string baseFolder=Pathbine("D:","3286");

  string fileName="image2.wmf";

  string inputFileName=Pathbine(baseFolder, fileName);

  using (Image image=Image.Load(inputFileName))

  {

  string script=((WmfImage)image).GetPostScript();

  string ethlOnScript=File.ReadAllText(inputFileName + ".ps");

  if (script !=ethlonScript)

  {

  throw new Exception("script not eqal ethalon script");

  }

  }

  Since PostScript is not supported in Aspose products, further processing is done by **third-party applications**.

  For example:

  Use ghostscript (ghostscript/)

  string baseFolder=Pathbine("D:","3286");

  string fileName="image2.wmf";

  string inputFileName=Pathbine(baseFolder, fileName);

  string scriptFileName=inputFileName + ".ps";

  string outputPdfFileName=scriptFileName + ".pdf";

  string ghostPath="C:

  Program Files (x86)

  gs

  gs8.61

  bin

  gswin32c.exe";

  string script;

  using (Image image=Image.Load(inputFileName))

  {

  script=((WmfImage)image).GetPostScript();

  }

  File.WriteAllText(scriptFileName, script);

  string cmdArguments=string.Format(" -sDEVICE=pdfwrite -o {0} {1}", outputPdfFileName, scriptFileName);

  Process proc=System.Diagnosticscess.Start(ghostPath, cmdArguments);

  proc.WaitForExit(60000);

  ▲IMAGINGNET-3230 - 将Jpeg转换为Tiff会导致绿色覆盖不正确

  using(Image image=Image.Load(“input.jpg”))

  {

  image.Save(“output.tiff”,new TiffOptions(TiffExpectedFormat.TiffJpegRgb));

  }

  ▲IMAGINGNET-3445 - 来自font文件夹的文件被锁定

  string baseFolder=Pathbine("D:", "test");

  string fOntsFolder=Pathbine(baseFolder, "fonts");

  //创建字体文件夹

  if (!Directory.Exists(fontsFolder))

  {

  Directory.CreateDirectory(fontsFolder);

  }//

  //复制字体到字体文件夹

  string fOntFile=Pathbine(fontsFolder, "foo.ttf");

  if (!File.Exists(fontFile))

  {

  File.Copy(Pathbine(baseFolder, "foo.ttf"), fontFile);

  }//

  //设置字体路径

  List fOnts=new List(FontSettings.GetDefaultFontsFolders());

  fonts.Add(fontsFolder);

  FontSettings.SetFontsFolders(fonts.ToArray(), true);//

  //打开图片

  string inputFile=Pathbine(baseFolder, "grinched-regular-font.psd");

  string outputFile=inputFile + ".png";

  using (Image image=Image.Load(inputFile))

  {

  PngOptions saveOptiOns=new PngOptions();

  image.Save(outputFile, saveOptions);

  }

  //删除字体文件夹

  Directory.Delete(fontsFolder,true);

  ▲IMAGINGNET-3444 - 用于调整SVG图像大小的Aspose.Imaging问题

  string baseFolder="D:

  ";

  string inputFileName=Pathbine(baseFolder, "logotype.svg");

  float scale=10f;

  using (Image image=Image.Load(inputFileName))

  {

  image.Save(inputFileName+".png", new PngOptions()

  {

  VectorRasterizatiOnOptions=new SvgRasterizationOptions()

  {PageSize=image.Size, ScaleX=scale, ScaleY=scale}

  });

  }




推荐阅读
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了如何在C#中启动一个应用程序,并通过枚举窗口来获取其主窗口句柄。当使用Process类启动程序时,我们通常只能获得进程的句柄,而主窗口句柄可能为0。因此,我们需要使用API函数和回调机制来准确获取主窗口句柄。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • ServiceStack与Swagger的无缝集成指南
    本文详细介绍了如何在ServiceStack项目中集成Swagger,以实现API文档的自动生成和在线测试。通过本指南,您将了解从配置到部署的完整流程,并掌握如何优化API接口的开发和维护。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • Google最新推出的嵌入AI技术的便携式相机Clips现已上架,旨在通过人工智能技术自动捕捉用户生活中值得纪念的时刻,帮助人们减少照片数量过多的问题。 ... [详细]
  • 本文详细介绍了Java中的访问器(getter)和修改器(setter),探讨了它们在保护数据完整性、增强代码可维护性方面的重要作用。通过具体示例,展示了如何正确使用这些方法来控制类属性的访问和更新。 ... [详细]
  • 本文介绍了如何使用PHP代码实现微信平台的媒体素材上传功能,详细解释了API接口的使用方法和注意事项,确保文件路径正确以避免常见的错误。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
  • 在使用 MUI 框架进行应用开发时,开发者常常会遇到 mui.init() 和 mui.plusReady() 这两个方法。本文将详细解释它们的区别及其在不同开发环境下的应用。 ... [详细]
  • 在 ExtJS 中,类的别名(alias)是开发过程中非常有用的一个特性。通过别名,开发者可以使用简短且易于记忆的名称来引用复杂的类名。本文将详细探讨如何在 ExtJS API 中使用和定义别名,并提供实例说明。 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
author-avatar
朵朵妞er
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有