自动化 Photoshop
如何使用 VB.NET 自动化 Photoshop。
引言
你有一堆图片,但它们看起来不太好。你希望增加对比度,或者改善颜色。幸运的是,你拥有 Adobe Photoshop CS2 及其出色的自动对比度功能。如果只有几十张图片,这没什么问题。如果有一百张,甚至几千张呢?打开每张图片到 Photoshop,应用调整,保存它……哦,这太无聊了。为什么不把所有这些任务自动化,让 Photoshop 努力工作,而我们躺在海滩上呢?
使用代码
让我们用八个简单的步骤来完成它
- 创建一个 Windows 应用程序项目。
- 添加对 Photoshop 对象库的引用。
- 为了在我们的应用程序中使用
Photoshop
对象,导入Photoshop
命名空间Imports Photoshop
- 声明我们将要使用的两个对象(Photoshop
Application
对象和 PhotoshopDocument
对象)Dim appRef As Photoshop.Application Dim currentDoc As Photoshop.Document
- 现在,我们应该定义包含我们图片的文件夹以及用于改进图片的文件夹。添加两个
FolderBrowseDialog
控件(输入和输出文件夹可以相同,图片将被覆盖;但是,这样做并不总是好的主意)。 另外,添加必要的TextBox
和Button
控件。添加
Button
控件以启动该过程并结束应用程序。 - 在表单加载时打开 Photoshop 应用程序。将 Photoshop 设置为不可见(尽管在启动时我们仍然可以看到它)。
appRef = New ApplicationClass appRef.Visible = False appRef.DisplayDialogs = PsDialogModes.psDisplayNoDialogs appRef.PlaybackDisplayDialogs = PsDialogModes.psDisplayNoDialogs
- 在应用程序退出事件中,不要忘记退出 Photoshop。
appRef.Quit()
- 最后,最后一步 - 处理文件夹中的每张图像。
Dim files() As String = IO.Directory.GetFiles(txtFrom.Text, "*.jpg") For Each fl As String In files currentDoc = appRef.Open(fl) Dim currentLayer As Photoshop.ArtLayer = _ CType(currentDoc.ActiveLayer, Photoshop.ArtLayer) currentLayer.AutoContrast() 'currentLayer.AutoLevels() Dim jpeg As New Photoshop.JPEGSaveOptions jpeg.Quality = 8 currentDoc.SaveAs(txtTo.Text + _ IO.Path.GetFileName(fl), jpeg, False, 2) currentDoc.Close() Next
享受你的生活,当你回来时,你会发现你所有的图片都完美无缺。
关注点
我们只应用了一个自动对比度调整功能。当然,Photoshop 中有无数种可能性来改善图像,我们可以将其用于我们的应用程序。只需研究 Photoshop Document
对象即可。
Photoshop 具有称为批量处理的功能。它在我们的自动化过程中可能非常有用。但是,由于某种未知的原因,我无法使其工作。