嗨,大家好!我很高兴分享 Aspose.Imaging 19.11 的发布公告,该公告已通过新功能得到增强,包括支持 调整 SVG 图像大小 和监控文档转换进度。 Aspose 团队最好的事情之一是它每月同时发布 .NET 和 Java API。这样,两个 API 的用户可以同时使用新添加的功能。

在以下部分中,我将向您介绍 API 中的新功能和增强功能。

使用 C# 和 Java 调整 SVG 大小

SVG 是一种可缩放矢量图形文件格式,并利用基于 XML 的内容来描绘图形。 SVG 文件格式可以缩放到各种大小而不会影响质量,因为内容用于渲染图像中的图形。换句话说,SVG 格式与分辨率无关。为此,在 Aspose.Imaging 中添加了一种新方法 resize,可用于获取 SVG 文件所需的尺寸大小。

以下示例演示了此功能的使用:

void ResizeSvg()
{
       string inputFileName = "Logotype.svg";
       using (Image image = Image.Load(inputFileName))
       {
                image.Resize(image.Width * 10,image.Height * 15);
                image.Save("Logotype_10_15.png", new PngOptions()
                {
                    VectorRasterizationOptions = new SvgRasterizationOptions()
                });
       }
}

类似的基于 Java 的实现如下:

String inputFileName = "Logotype.svg";
try (Image image = Image.load(inputFileName))
{
	image.resize(image.getWidth() * 10,image.getHeight() * 15);
	image.save("Logotype_10_15.png", new PngOptions()
	{{
		setVectorRasterizationOptions(new SvgRasterizationOptions());
	}});
}

支持文档转换进度

有时,您使用大型图像文件,并且在将此类文件渲染为其他格式时,根据文件大小需要等待很长时间才能完成渲染过程。在这种情况下,确定转换进度非常方便,因为如果您打算向最终用户显示有关转换过程的某些状态,它会很有用。为此,在 Aspose.Imaging 中添加了一个新属性 ProgressCallback

以下示例演示了此功能的使用:

// 使用单独的操作进度事件处理程序进行加载/导出操作的示例
using (var image = Image.Load(fileName, new LoadOptions { ProgressEventHandler = ProgressCallback }))
{
    image.Save(fileName+".psd",
               new PsdOptions() { ProgressEventHandler = ExportProgressCallback });
}

internal void ProgressCallback(ProgressEventHandlerInfo info)
{
     Console.WriteLine("{0} : {1}/{2}", info.EventType, info.Value, info.MaxValue);
}

internal void ExportProgressCallback(ProgressEventHandlerInfo info)
{
     Console.WriteLine("Export event {0} : {1}/{2}", info.EventType, info.Value, info.MaxValue);
}


// 操作进度事件处理程序的使用示例
using (var image = Image.Load(fileName, new LoadOptions { ProgressEventHandler = ProgressCallback }))
{
    image.Save();
}

internal void ProgressCallback(ProgressEventHandlerInfo info)
{
     Console.WriteLine("{0} : {1}/{2}", info.EventType, info.Value, info.MaxValue);
}

类似的基于 Java 的实现如下:

// 使用单独的操作进度事件处理程序进行加载/导出操作的示例
String fileName = "some file to load";
LoadOptions loadOptions = new LoadOptions();
loadOptions.setProgressEventHandler(new ProgressEventHandler()
{
	@Override
	public void invoke(ProgressEventHandlerInfo info)
	{
		System.out.format("Load event %s : %d/%d\n", EventType.toString(EventType.class, info.getEventType())
				, info.getValue(), info.getMaxValue());
	}
});
try (Image image = Image.load(fileName, loadOptions))
{
	PsdOptions psdOptions = new PsdOptions();
	psdOptions.setProgressEventHandler(new ProgressEventHandler()
	{
		@Override
		public void invoke(ProgressEventHandlerInfo info)
		{
			System.out.format("Export event %s : %d/%d\n", EventType.toString(EventType.class, info.getEventType())
					, info.getValue(), info.getMaxValue());
		}
	});
	image.save(fileName + ".psd", psdOptions);
}

等等,此版本中包含许多其他功能、增强功能和错误修复。您可以参考我们的 Release Notes 部分 以获取更多详细信息。

如果时间允许,您还可以查看现成的 Github 上的示例。您还可以在我们的 产品支持论坛 中讨论此版本和其他 API 相关问题。