参考:Specifying compression in PNGSaveOptions broken?
課題
- 別名保存でPNG形式保存時、PNGSaveOptions の compression を変更しても反映されない。(参考の通り)
- (compressionは、PNGエクスポート用かな?)
- ActionDescriptor で回避
環境
- Windows 10
- C# (WPF/.Net5)
- Adobe Photoshop 2021 Object Library
コード
var s = "高速"; var d1 = new Photoshop.ActionDescriptorClass(); if(s = "高速") { d1.PutEnumerated(PhotoshopInstance.App.StringIDToTypeID("method"), PhotoshopInstance.App.StringIDToTypeID("PNGMethod"), PhotoshopInstance.App.StringIDToTypeID("quick")); d1.PutEnumerated(PhotoshopInstance.App.StringIDToTypeID("PNGInterlaceType"), PhotoshopInstance.App.StringIDToTypeID("PNGInterlaceType"), PhotoshopInstance.App.StringIDToTypeID(psOption.Interlaced ? "PNGInterlaceAdam7" : "PNGInterlaceNone")); d1.PutEnumerated(PhotoshopInstance.App.StringIDToTypeID("PNGFilter"), PhotoshopInstance.App.StringIDToTypeID("PNGFilter"), PhotoshopInstance.App.StringIDToTypeID("PNGFilterAdaptive")); d1.PutInteger(PhotoshopInstance.App.StringIDToTypeID("Compression"), psOption.Compression); } if(s = "中速") { d1.PutEnumerated(PhotoshopInstance.App.StringIDToTypeID("method"), PhotoshopInstance.App.StringIDToTypeID("PNGMethod"), PhotoshopInstance.App.StringIDToTypeID("moderate"))); } if(s = "低速") { d1.PutEnumerated(PhotoshopInstance.App.StringIDToTypeID("method"), PhotoshopInstance.App.StringIDToTypeID("PNGMethod"), PhotoshopInstance.App.StringIDToTypeID("thorough")); } // 共通 var d = new Photoshop.ActionDescriptorClass(); d.PutObject(PhotoshopInstance.App.StringIDToTypeID("as"), PhotoshopInstance.App.StringIDToTypeID("PNGFormat"), d1); d.PutPath(PhotoshopInstance.App.StringIDToTypeID("in"), sav); d.PutBoolean(PhotoshopInstance.App.StringIDToTypeID("copy"), true); PhotoshopInstance.App.ExecuteAction(PhotoshopInstance.App.StringIDToTypeID("save"), d, Photoshop.PsDialogModes.psDisplayNoDialogs);
おわり