65.9K
CodeProject 正在变化。 阅读更多。
Home

自动化 Photoshop

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.40/5 (8投票s)

2006年7月17日

CPOL

2分钟阅读

viewsIcon

131226

downloadIcon

3281

如何使用 VB.NET 自动化 Photoshop。

引言

你有一堆图片,但它们看起来不太好。你希望增加对比度,或者改善颜色。幸运的是,你拥有 Adobe Photoshop CS2 及其出色的自动对比度功能。如果只有几十张图片,这没什么问题。如果有一百张,甚至几千张呢?打开每张图片到 Photoshop,应用调整,保存它……哦,这太无聊了。为什么不把所有这些任务自动化,让 Photoshop 努力工作,而我们躺在海滩上呢?

使用代码

让我们用八个简单的步骤来完成它

  1. 创建一个 Windows 应用程序项目。
  2. 添加对 Photoshop 对象库的引用。

  3. 为了在我们的应用程序中使用 Photoshop 对象,导入 Photoshop 命名空间
    Imports Photoshop
  4. 声明我们将要使用的两个对象(Photoshop Application 对象和 Photoshop Document 对象)
    Dim appRef As Photoshop.Application
    Dim currentDoc As Photoshop.Document
  5. 现在,我们应该定义包含我们图片的文件夹以及用于改进图片的文件夹。添加两个 FolderBrowseDialog 控件(输入和输出文件夹可以相同,图片将被覆盖;但是,这样做并不总是好的主意)。 另外,添加必要的 TextBoxButton 控件。

    添加 Button 控件以启动该过程并结束应用程序。

  6. 在表单加载时打开 Photoshop 应用程序。将 Photoshop 设置为不可见(尽管在启动时我们仍然可以看到它)。
    appRef = New ApplicationClass
    appRef.Visible = False
    appRef.DisplayDialogs = PsDialogModes.psDisplayNoDialogs
    appRef.PlaybackDisplayDialogs = PsDialogModes.psDisplayNoDialogs
  7. 在应用程序退出事件中,不要忘记退出 Photoshop。
    appRef.Quit()
  8. 最后,最后一步 - 处理文件夹中的每张图像。
    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 具有称为批量处理的功能。它在我们的自动化过程中可能非常有用。但是,由于某种未知的原因,我无法使其工作。

© . All rights reserved.