没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|产品更新|编辑:李显亮|2021-05-06 09:57:43.857|阅读 303 次
概述:Aspose.PSD for .Net更新至新版本v21.4,添加图案叠加层效果的渲染,支持使用PSD图像中的矢量路径调整形状图层的大小,欢迎下载体验。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
Aspose.PSD是高级PSD和入门级AI文件格式操作API,允许创建和编辑Photoshop文件,并提供更新图层属性,添加水印,执行图形操作或将一种文件格式转换为另一种文件的功能,没有任何Adobe Photoshop或Adobe Illustrator依赖项。
Aspose.PSD for .Net更新至新版本v21.4,添加图案叠加层效果的渲染,支持使用PSD图像中的矢量路径调整形状图层的大小,修复一些Bug问题。
>>你可以点击这里下载Aspose.PSD for .NET v21.4试用体验。
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天临时授权体验。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
DevExpress WPF控件近期全新发布v24.2,此版本进一步升级了Spreadsheet(电子表格)组件的功能,欢迎下载最新版体验!
今天主要盘点一下JetBrains IDEs v2025.1发布的一些新功能,欢迎大家甄选适合的IDE体验!
ONLYOFFICE 与 Jira 集成的重大更新现已发布!从 4.0.0 版本开始,ONLYOFFICE 连接器允许您编辑 PDF 文件和表单、直接从编辑器创建新文件、可视化用户头像、在 Jira 平台内处理新文件格式等等。阅读本文,了解更多详情。
PC‑lint Plus 2025 Beta 3 全新上线,新增图形化界面 PC‑lint Plus View,助力 C/C++ 开发者高效查看、筛选、追踪并导出诊断结果。本文从界面功能、标准支持、编译器兼容性到压缩存档等方面展开分析,并提供各平台下载链接,助你快速体验这款专业级静态分析工具。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号