none
Adobe Photoshopで作成した*.epsの画像ファイルをBMP形式、もしくは、JPG形式に変換する方法 RRS feed

  • 質問

  • Adobe Photoshopで作成した*.epsの画像ファイルをBMP形式、もしくは、JPG形式の画像ファイル

    に変換する方法はないのでしょうか?

    直接変換する関数等がないなら、そういった製品はないのでしょうか?

    EPSからBMPへの変換をプログラム(VB.NET or C#)で行おうと考えています。

     

    環境:Visual Studio 2005

     

    2008年2月13日 5:24

回答

  • 外池です。

     

    状況理解できました。

     

    まず、ひとつ。とにかく「マスター画像」の集合体を扱わないといけない。すでに持っているもの(Excelで管理中)もあるし、今後客先から送られてくるものがある。これは、EPSやJPGである。画質の変更をしてはならず、原版ファイルのままで扱う。

     

    もうひとつ、今回開発中のアプリで上述の「マスター画像」を管理する際、閲覧が便利になるように、小さなサイズの画像(いわゆる「サムネイル」画像というやつですよね?)も用意しておく。

     

    で・・・、お尋ねなのは、EPSからサムネイルを生成する良い方法はないか? ということですね?

    (JPGの原版ファイルからサムネイル画像を作ることは、.Net Frameworkの機能でできるはず)

     

    とにかく、Adobeの部品をつかって、画面に原版EPSの縮小版の絵が出さえすれば、あとは、Screenをキャプチャして(.Net Frameworkでできます)処理すればOKですね・・・。

     

     

     

     

     

    2008年2月14日 1:18
  •  QandY さんからの引用

    ソフト運用開始時には、それまでエクセルで管理されてきた画像データ(EPSやJPG)を

    一括登録する必要があります。

    その際は、Photoshopの機能で一括変換しようと考えています。

     


    これは何に変換するのでしょうか?


     QandY さんからの引用

    お客様から送られてきた画像(EPS)をPhotoshopで変換した画像をアプリで管理してしまうと

    画像形式の違いで微妙な差が生じ、トラブルの元になってはいけないのでマスタ画像の管理は

    送られてきた画像形式のまま管理したいのです。



    マスタ画像はそのままの形式で管理と矛盾しているように思えるのですが。



    少し話を整理すると(予想を含みます)、
     (1) 今現在は、epsやjpgの商品画像が既にあり、保存場所や画像情報をExcelで管理している。
     (2) それを、AccessをDBにして、マスタ画像も情報も突っ込み、一元管理したい。
     (3) クライアントソフトをVBかC#で作り、検索と画像プレビューをしたい。
    といった感じでしょうか?

    Object Librayの使い方は、Scripting Guideや各スクリプト言語用のリファレンスが一番参考になる気がします。
    http://www.adobe.com/devnet/photoshop/
    VBA用で使ってる例もネットで探すといくつかあるようですが。
    VBやC#から使うなら、それらを参考にマネージド環境でのCOMの使い方も必要になるかと思います。

    何となくですが、プレビューならSusieのプラグイン使うのもアリじゃないでしょうか。
    2008年2月14日 1:44
  • ぼーず様

    返信ありがとうございます。

     

    画像登録する端末には、CS2がインストールされているのでPhotoshopを呼び出して

    JPG変換することにしました。

     

    うまくいったコードを掲載しておきます。

    この方法では、一度画面にPhotoshopが現れます。

    Photoshopが現れない形で変換できればベストなのですが現在調査中です。

     

    Photoshop 9.0 object libraryを参照設定

     

        Dim app As New Photoshop.Application
        Dim doc As Photoshop.Document
        Dim JPGsaveOpt As New Photoshop.JPEGSaveOptions
       
        Call app.Open("C:\INPUT\AAA.eps")
        Call app.Open("C:\INPUT\BBB.eps")
        Call app.Open("C:\INPUT\CCC.eps")
        
        Dim i As Integer
       
        With app.Documents
           
            JPGsaveOpt.Quality = 10
           
            Do While .Count > 0
           
                Set doc = .Item(1)
                app.ActiveDocument = doc
               
                Call doc.ResizeImage(100, 100, doc.Resolution, Photoshop.PsResampleMethod.psBicubic)
           
                Call doc.SaveAs("C:\OUTPUT\" & doc.Name & ".JPG", JPGsaveOpt, True, psLowercase)
               
                Call doc.Close(Photoshop.PsSaveBehavior.psAlwaysSave)
           
            Loop
       
        End With
       
        app.Quit

    2008年2月14日 8:03

すべての返信

  • 「そういった製品」がライブラリーという意味でしたら、
    epsをbitmapやjpegに変換するライブラリーはあまりないと思います。

    ちょっと探してみても、Windowsで使えるものはSusieのプラグインがある程度でした。
    http://f35.aaa.livedoor.jp/~mokeke/susiespi.html

    Linux系ではこれが作りたいプログラムに近い気がします。
    http://www.mech.tohoku-gakuin.ac.jp/rde/contents/library/ps2img/ps2img.html


    ファイルフォーマット調べて作りこむならこの辺りが資料になるでしょうか。
    http://people.scs.fsu.edu/~burkardt/data/eps/eps.html
    http://www.quite.com/ps/eps1.htm
    http://www.prepressure.com/library/file-formats/eps


    少し参考になるかも。
    http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200307/200307_03070052.html



    # 以下は興味本位の質問と余計なおせっかいです。

    ちょっとお聞きしたいのですが、これって何かの需要があって作りたいのでしょうか?

    一般的にepsはIllustratorなどで使われるベクター画像のフォーマットで、
    上記のリンクはそれを前提にしていると思いますが、
    photoshopのepsはちょっと内部形式が異なるかもしれません。

    わざわざラスター画像の加工ソフトであるPhotoshopでepsを吐き出さないといけない
    理由もよくわからないのですが、それを更にbitmapなどに変換するなら、最初から
    Photoshopで保存した方がキレイですし、手間もかからないと思うのですが。

    もし、何で作成したかはわからないけどeps画像が大量にあり、それをbitmapなどに
    変換したいのであれば、PhotoshopなりIllustratorなりのアクション機能で自動化して
    書き出した方が良いかと思います。
    もしくは、PhotoshopやIllustratorを呼び出して同様のことをするアプリを作る。
    2008年2月13日 8:02
  • ぼーず

    返信ありがとうございます。

     

    目的は、社内で画像のスペック情報を管理するソフトを作ってほしいと

    依頼があったため、Access2003を使用して作成しようと考えています。

    使い方は、ユーザがEPS形式のファイルと、そのスペック情報を登録し

    後日、キーワード検索で内容を確認するというものです。検索結果には

    画像のデータを表示しなければならないため、Accessで表示するために

    EPS⇒BMP(小さいサイズに圧縮)の変換作業が必要になってくるわけです。

     

    開発ソフトの実行環境にはAdobe CS2 がインストールされているので

    photoshop 9.0 object library等の使い方が分かれば簡単にできるの

    かもしれませんが、現在調査中です。

     

    Adobeのこのライブラリを使用すればできるという情報があればご教授願います。

     

    2008年2月14日 0:20
  • 外池と申します。

    まず最初に、

     QandY さんからの引用

    社内で画像のスペック情報を管理する

    とのことですが、ここで言う「画像」とは、写真の(ラスターな)画像? それとも、図面のような(ベクターな)線画? あるいは、両方?

     

    次いで、

     QandY さんからの引用

    使い方は、ユーザがEPS形式のファイルと、そのスペック情報を登録し

    後日、キーワード検索で内容を確認する

    ですが、ぼーずさんもご指摘になっていますが、ココは大事です。すでに、EPS形式のファイルの集積がされている実状があるのでしょうか? それとも、そのアプリが運用開始になってから作業が始まるのでしょうか? 前者であればなんとか頑張るしかありませんし、後者なら(特にラスターな画像のみならば)EPS形式にこだわる必要はない、むしろ、EPS形式は避けるべきと思います。

     

    2008年2月14日 0:37
  • 外池様

    返信ありがとうございます。

     

    扱う画像は、カタログに掲載する商品の写真になります。

     

    ソフト運用開始時には、それまでエクセルで管理されてきた画像データ(EPSやJPG)を

    一括登録する必要があります。

    その際は、Photoshopの機能で一括変換しようと考えています。

     

    ソフトでは、お客様またはデザイン会社から送られてきたEPSもしくはJPGを管理し、画面で検索結果を

    表示する際は、EPSのままでは表示できないし、サイズも大きいため登録時にBMP変換

    した小さいサイズの画像を表示するつもりです。

    お客様から送られてきた画像(EPS)をPhotoshopで変換した画像をアプリで管理してしまうと

    画像形式の違いで微妙な差が生じ、トラブルの元になってはいけないのでマスタ画像の管理は

    送られてきた画像形式のまま管理したいのです。

    2008年2月14日 0:53
  • 外池です。

     

    状況理解できました。

     

    まず、ひとつ。とにかく「マスター画像」の集合体を扱わないといけない。すでに持っているもの(Excelで管理中)もあるし、今後客先から送られてくるものがある。これは、EPSやJPGである。画質の変更をしてはならず、原版ファイルのままで扱う。

     

    もうひとつ、今回開発中のアプリで上述の「マスター画像」を管理する際、閲覧が便利になるように、小さなサイズの画像(いわゆる「サムネイル」画像というやつですよね?)も用意しておく。

     

    で・・・、お尋ねなのは、EPSからサムネイルを生成する良い方法はないか? ということですね?

    (JPGの原版ファイルからサムネイル画像を作ることは、.Net Frameworkの機能でできるはず)

     

    とにかく、Adobeの部品をつかって、画面に原版EPSの縮小版の絵が出さえすれば、あとは、Screenをキャプチャして(.Net Frameworkでできます)処理すればOKですね・・・。

     

     

     

     

     

    2008年2月14日 1:18
  •  QandY さんからの引用

    ソフト運用開始時には、それまでエクセルで管理されてきた画像データ(EPSやJPG)を

    一括登録する必要があります。

    その際は、Photoshopの機能で一括変換しようと考えています。

     


    これは何に変換するのでしょうか?


     QandY さんからの引用

    お客様から送られてきた画像(EPS)をPhotoshopで変換した画像をアプリで管理してしまうと

    画像形式の違いで微妙な差が生じ、トラブルの元になってはいけないのでマスタ画像の管理は

    送られてきた画像形式のまま管理したいのです。



    マスタ画像はそのままの形式で管理と矛盾しているように思えるのですが。



    少し話を整理すると(予想を含みます)、
     (1) 今現在は、epsやjpgの商品画像が既にあり、保存場所や画像情報をExcelで管理している。
     (2) それを、AccessをDBにして、マスタ画像も情報も突っ込み、一元管理したい。
     (3) クライアントソフトをVBかC#で作り、検索と画像プレビューをしたい。
    といった感じでしょうか?

    Object Librayの使い方は、Scripting Guideや各スクリプト言語用のリファレンスが一番参考になる気がします。
    http://www.adobe.com/devnet/photoshop/
    VBA用で使ってる例もネットで探すといくつかあるようですが。
    VBやC#から使うなら、それらを参考にマネージド環境でのCOMの使い方も必要になるかと思います。

    何となくですが、プレビューならSusieのプラグイン使うのもアリじゃないでしょうか。
    2008年2月14日 1:44
  • 外池様

    返信ありがとうございます。

     

    まさに、指摘されている通り、EPSからサムネイルを生成したいのです。

    Adobeの部品(コントロール?)にプレビュー機能がついたものがあるか

    調査すれば.NET Framework経由で何とかできそうですね。調べてみます。

     

    2008年2月14日 2:24
  • ぼーず

    返信ありがとうございます。

     

    Photoshopで一括変換するのは、サムネイル用の画像を作成するために

    一括変換を行います。

     

    したいことは、(1)~(3)で示されている通りです。

     

    Susieのプラグインの使い方も調査してみます。

     

    2008年2月14日 2:30
  •  QandY さんからの引用

     Photoshopで一括変換するのは、サムネイル用の画像を作成するために

    一括変換を行います。

     


    これは、マスタ画像と一緒にサムネイルもDBに保存するということでしょうか?
    であるならば、検索してプレビュー表示する時もそのサムネイル(jpgなど)を表示すればいいわけですよね?

    どのくらいの頻度でお客から画像が送られてくるのかはわかりませんが、その都度Photoshopで
    サムネイルに変換(縮小してコピー保存)して、両方をDBに登録するという運用ではいけないのでしょうか?

    この運用にすれば、クライアントアプリにepsからjpgに変換する機能を自前で作成する必要はないように思えます。



    もし、
      マスタ画像のみをDBに登録して検索プレビュー時に動的にサムネイル画像を生成する、
    もしくは、
      登録時に自動でサムネイルを生成して両方を登録する、
    ということであれば、変換機能を実装する必要はありますが、最初の一括変換はしなくてよいのでは?


    # おせっかいにも設計的な話になってすみません。
    2008年2月14日 3:09
  • ぼーず様

    返信ありがとうございます。

     

    おっしゃる通り、ユーザ側であらかじめ変換したサムネイルを同時に登録すればよい話になる

    のですが、なるべくユーザに優しい操作を実現したいので、プログラム側で行うように

    したいと考えています。

    プログラム側で面倒くさい処理を行ってあげれば、ユーザがバイトの方であっても簡単に

    登録できるので是非ともプログラム実装したいのです。

     

    変換プログラムが実装できれば、ご指摘通り一括変換もプログラムでしてしまえば変換から

    登録までの作業が簡単になると思います。

     

    この機能を実現するためにも、ベストな方法をご教授願います。

    2008年2月14日 4:31
  • だいたいの概要はわかりました。

    一つ確認なのですが、開発環境にだけでなく、各クライアントPCにも
    CS2はインストールされているんでしょうか?
    そうであれば、Object LibraryのヘルプやSDKを参考にクライアントアプリを
    作れそうな気がしますが、開発環境のみだとムリだと思いますよ。

    # 各クライアントPCにCS2があれば、変換プログラムを実装する必要はなく
    # Photoshop/Illustratorを呼び出して変換させれるような
    # アプリを作ればいいと思いますけど。

    クライアントPCの環境が大丈夫だとして、具体的な実装段階で、
    ライブラリに関してヘルプやSDKサンプルを見てもわからないことは
    たぶんココよりAdobeのフォーラムに行かれたほうが
    有益な情報が得られるように思います。

    VBやC#からCOMやネイティブライブラリを使う方法などであれば
    ココに詳しい方は多くいらっしゃると思いますが、Adobeの
    Object Librayに詳しい方はあまりいないのではないでしょうか。

    2008年2月14日 6:23
  • ぼーず様

    返信ありがとうございます。

     

    画像登録する端末には、CS2がインストールされているのでPhotoshopを呼び出して

    JPG変換することにしました。

     

    うまくいったコードを掲載しておきます。

    この方法では、一度画面にPhotoshopが現れます。

    Photoshopが現れない形で変換できればベストなのですが現在調査中です。

     

    Photoshop 9.0 object libraryを参照設定

     

        Dim app As New Photoshop.Application
        Dim doc As Photoshop.Document
        Dim JPGsaveOpt As New Photoshop.JPEGSaveOptions
       
        Call app.Open("C:\INPUT\AAA.eps")
        Call app.Open("C:\INPUT\BBB.eps")
        Call app.Open("C:\INPUT\CCC.eps")
        
        Dim i As Integer
       
        With app.Documents
           
            JPGsaveOpt.Quality = 10
           
            Do While .Count > 0
           
                Set doc = .Item(1)
                app.ActiveDocument = doc
               
                Call doc.ResizeImage(100, 100, doc.Resolution, Photoshop.PsResampleMethod.psBicubic)
           
                Call doc.SaveAs("C:\OUTPUT\" & doc.Name & ".JPG", JPGsaveOpt, True, psLowercase)
               
                Call doc.Close(Photoshop.PsSaveBehavior.psAlwaysSave)
           
            Loop
       
        End With
       
        app.Quit

    2008年2月14日 8:03
  • 外池です。すばらしいじゃないですか!

     

    私が質問者の方にお尋ねするのも変ですが、この手の情報を得るためのドキュメントはどこにありました? ご教示頂けると嬉しいです。

     

    -------(以下、追記)

     

    私の環境だと、Photoshopの7.0 Type Libraryしかない。 T_T

     

    でも、Photoshopで作ったActionのリストのファイルがあれば、EPSファイルを開いてActionを走らせて保管することは可能な模様。

     

    これは・・・、おもしろそうだ。

     

    2008年2月14日 8:22
  •  > この方法では、一度画面にPhotoshopが現れます。
     > Photoshopが現れない形で変換できればベストなのですが現在調査中です。

    app.Open()する前に、app.DisplayDialogs = 3 (psDisplayNoDialogs)にすると
    表示されなくなったりしませんかね?
    2008年2月14日 9:06
  • 外池様

    返信ありがとうございます。

     

    いろいろネット上を探しましたが、これだというHPは見当たりませんでした。

     

    少しだけ参考になったのは、下記のHPです。

    http://www15.ocn.ne.jp/~preopen/vb/making.html

     

    このHPを応用し、Photoshop 9.0 Object Libraryの使い方を

    色々試してみました。

     

    VBでデバッグ実行しながら、ウォッチリストやオブジェクトブラウザを活用して

    ちょっとずつコードを作成していきました。

     

    使い方が間違っている部分があるかもしれませんが、

    何とか思った動きを実現できるようになりました。

     

     

    2008年2月14日 9:20
  • ぼーず様

    返信ありがとうございます。

     

     ぼーず さんからの引用
     app.Open()する前に、app.DisplayDialogs = 3 (psDisplayNoDialogs)にすると
    表示されなくなったりしませんかね?

     

    試してみましたが、Photoshopが起動され、画面に表示されてしまいます。

    2008年2月14日 9:24

  • app.Visible = falseでどうでしょう?
    2008年2月14日 9:50
  • ぼーず様

    返信ありがとうございます。

     

     ぼーず さんからの引用

    app.Visible = falseでどうでしょう?

     

    Visible操作でもやはりPhotoshopは表示されるようです。

    色々試して結果を報告します。

    2008年2月14日 23:29