PSD文件格式处理API新功能示例解析:图案叠加层效果的渲染

Aspose.PSD for .Net更新至新版本v21.4,添加图案叠加层效果的渲染,支持使用PSD图像中的矢量路径调整形状图层的大小,欢迎下载体验。

Aspose.PSD for .Net更新至新版本v21.4,添加图案叠加层效果的渲染,支持使用PSD图像中的矢量路径调整形状图层的大小,修复一些Bug问题。

>>你可以点击这里下载Aspose.PSD for .NET v21.4试用体验。

整合所有格式API处理控件Aspose.Total永久授权火热促销中,联系客服立马1分钟了解全部!

具体更新内容

key 概述 类别
PSDNET-259 图案叠加层效果的渲染 功能
PSDNET-861 添加未知的Vogk资源属性以支持使用PSD图像中的矢量路径调整形状图层的大小 功能
PSDNET-90 PSD未正确转换为PDF Bug修复
PSDNET-830 保存带有文本层的特定PSD文件的异常 Bug修复

新功能解析

PSDNET-259——图案叠加层效果的渲染

 string sourceFile = "imageWithPattern.psd";            string outputFile = "output.png";            using (var image = (PsdImage)Image.Load(sourceFile, new PsdLoadOptions() { LoadEffectsResource = true }))            {                image.Save(outputFile, new PngOptions());            }

PSDNET-861——添加未知的Vogk资源属性以支持使用PSD图像中的矢量路径调整形状图层的大小

// This example shows how to get and set new Transform and OriginBoxCorners properties            // of ShapeOriginSettings in the Vogk resource of FillLayer in the PSD file            string sourceFileName = Path.Combine("PSDNET861_1", "vectorShape_25_50.psd");            string outputPath = Path.Combine("PSDNET861_1", "result.psd");            VectorShapeOriginSettings originalSetting;            const int layerIndex = 0;            // Load the original image            using (PsdImage image = (PsdImage)Image.Load(sourceFileName))            {                AssertIsTrue(layerIndex < image.Layers.Length);                var layer = image.Layers[layerIndex];                AssertIsTrue(layer is FillLayer);                var resource = GetVogkResource((FillLayer)layer);                AssertAreEqual(1, resource.ShapeOriginSettings.Length);                // Assert after reading                var setting = resource.ShapeOriginSettings[0];                AssertAreEqual(false, setting.IsShapeInvalidatedPresent);                AssertAreEqual(false, setting.IsOriginRadiiRectanglePresent);                AssertAreEqual(true, setting.IsOriginIndexPresent);                AssertAreEqual(0, setting.OriginIndex);                AssertAreEqual(true, setting.IsOriginTypePresent);                AssertAreEqual(5, setting.OriginType);                AssertAreEqual(true, setting.IsOriginShapeBBoxPresent);                AssertAreEqual(Rectangle.FromLeftTopRightBottom(3, 7, 10, 22), setting.OriginShapeBox.Bounds);                AssertAreEqual(true, setting.IsOriginResolutionPresent);                AssertAreEqual(300d, setting.OriginResolution);                // Assert new properties                AssertAreEqual(true, setting.IsTransformPresent);                AssertAreEqual(0d, setting.Transform.Tx);                AssertAreEqual(0d, setting.Transform.Ty);                AssertAreEqual(0.050000000000000003d, setting.Transform.Xx);                AssertAreEqual(0d, setting.Transform.Yx);                AssertAreEqual(0d, setting.Transform.Xy);                AssertAreEqual(0.1d, setting.Transform.Yy);                AssertAreEqual(true, setting.IsOriginBoxCornersPresent);                AssertAreEqual(2.9000000000000004d, setting.OriginBoxCorners[0]);                AssertAreEqual(7.3000000000000007d, setting.OriginBoxCorners[1]);                AssertAreEqual(10.450000000000001d, setting.OriginBoxCorners[2]);                AssertAreEqual(7.3000000000000007d, setting.OriginBoxCorners[3]);                AssertAreEqual(10.450000000000001d, setting.OriginBoxCorners[4]);                AssertAreEqual(22.400000000000002d, setting.OriginBoxCorners[5]);                AssertAreEqual(2.9000000000000004d, setting.OriginBoxCorners[6]);                AssertAreEqual(22.400000000000002d, setting.OriginBoxCorners[7]);                // Set new properties                originalSetting = resource.ShapeOriginSettings[0];                originalSetting.Transform.Tx = 0.2d;                originalSetting.Transform.Ty = 0.3d;                originalSetting.Transform.Xx = 0.4d;                originalSetting.Transform.Xy = 0.5d;                originalSetting.Transform.Yx = 0.6d;                originalSetting.Transform.Yy = 0.7d;                originalSetting.OriginBoxCorners = new double[8] { 9, 8, 7, 6, 5, 4, 3, 2 };                // Save this PSD image with changed propeties.                image.Save(outputPath, new PsdOptions(image));            }            // Load the saved PSD image with changed propeties.            using (PsdImage image = (PsdImage)Image.Load(outputPath))            {                var layer = image.Layers[layerIndex];                AssertIsTrue(layer is FillLayer);                var resource = GetVogkResource((FillLayer)layer);                AssertAreEqual(1, resource.ShapeOriginSettings.Length);                // Assert that properties are saved and loaded correctly                var setting = resource.ShapeOriginSettings[0];                AssertAreEqual(true, setting.IsOriginIndexPresent);                AssertAreEqual(false, setting.IsShapeInvalidatedPresent);                AssertAreEqual(true, setting.IsOriginResolutionPresent);                AssertAreEqual(true, setting.IsOriginTypePresent);                AssertAreEqual(true, setting.IsOriginShapeBBoxPresent);                AssertAreEqual(false, setting.IsOriginRadiiRectanglePresent);                AssertAreEqual(0, setting.OriginIndex);                AssertAreEqual(true, setting.IsTransformPresent);                AssertAreEqual(0.2d, setting.Transform.Tx);                AssertAreEqual(0.3d, setting.Transform.Ty);                AssertAreEqual(0.4d, setting.Transform.Xx);                AssertAreEqual(0.5d, setting.Transform.Xy);                AssertAreEqual(0.6d, setting.Transform.Yx);                AssertAreEqual(0.7d, setting.Transform.Yy);                AssertAreEqual(true, setting.IsOriginBoxCornersPresent);                AssertAreEqual(originalSetting.OriginBoxCorners[0], setting.OriginBoxCorners[0]);                AssertAreEqual(originalSetting.OriginBoxCorners[1], setting.OriginBoxCorners[1]);                AssertAreEqual(originalSetting.OriginBoxCorners[2], setting.OriginBoxCorners[2]);                AssertAreEqual(originalSetting.OriginBoxCorners[3], setting.OriginBoxCorners[3]);                AssertAreEqual(originalSetting.OriginBoxCorners[4], setting.OriginBoxCorners[4]);                AssertAreEqual(originalSetting.OriginBoxCorners[5], setting.OriginBoxCorners[5]);                AssertAreEqual(originalSetting.OriginBoxCorners[6], setting.OriginBoxCorners[6]);                AssertAreEqual(originalSetting.OriginBoxCorners[7], setting.OriginBoxCorners[7]);            }            VogkResource GetVogkResource(FillLayer layer)            {                if (layer == null)                {                    throw new PsdImageArgumentException("The parameter layer should not be null.");                }                VogkResource resource = null;                var resources = layer.Resources;                for (int i = 0; i < resources.Length; i++)                {                    if (resources[i] is VogkResource)                    {                        resource = (VogkResource)resources[i];                        break;                    }                }                if (resource == null)                {                    throw new PsdImageException("VogkResource not found.");                }                return resource;            }            void AssertIsTrue(bool condition)            {                if (!condition)                {                    throw new FormatException(string.Format("Expected true"));                }            }            void AssertAreEqual(object actual, object expected)            {                if (!object.Equals(actual, expected))                {                    throw new FormatException(string.Format("Actual value {0} are not equal to expected {1}.", actual, expected));                }            }

如果你想试用Aspose的全部完整功能,可联系在线客服获取30天临时授权体验。


还想要更多吗可以点击阅读【Aspose最新资源在线文库】查找需要的教程资源。如果您有任何疑问或需求,请随时加入Aspose技术交流群(),我们很高兴为您提供查询和咨询
标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月2日
下一篇 2021年4月3日

相关推荐

发表回复

登录后才能评论