人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

画像を自動連結する方法を教えてください。(UWSCなど利用)


あるフォルダの中に画像が並んでいます(昇順)
例P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12・・・・

★画像をいくつか選択してあるときに、選択されている画像の3番目?6番目の画像を4連結して3番目の画像の名前にしてほしいのです。

例・上記のP1が選択された状態で実行すると、左上P3、右上P4、左下P5、右下P6という形で1枚の画像が連結され、それがP3という名前で保存されます。

フォルダ内で、何個選択してあっても、同様にしてほしいのです。

使用するソフトは、UWSCを基軸に、画像はペイントかVIX221かJtrimかEasyピクト1.30あたりでお願いしたいです。ぜひスクリプトを教えて下さい。

よろしくお願いいたします。

●質問者: naranara19
●カテゴリ:コンピュータ インターネット
✍キーワード:p2 スクリプト ソフト フォルダ 名前
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●60ポイント ベストアンサー

準備1

ImageMagic(下記のImageMagick-6.5.8-8-Q16-windows-dll.exeでよいでしょう) をインストールしてください。

http://www.imagemagick.org/www/binary-releases.html#windows


準備2

あらかじめ対象フォルダに list.txt を作成してください。手順は、

(1) ファイル名を指定して実行から、「cmd」を実行

(2)開いたコマンドウィンドウで下記を実行(パスは実際のもの)

C\>CD /D "D:\Image Data"

(3)下記を実行

D:\Image Data>DIR /B *.jpg>list.txt

これで、list.txt が作成されるので中身を必要に応じて編集してください。

上から4ファイルずつをまとめていきますので、順番や組み合わせもここで変更できます。


下記のスクリプトの★の部分を実際のパスに変更し、適当な名前で拡張子 .vbs で保存します。

(場所は画像フォルダと同じでもかまいません)。

'------------------------------------------------------------------
Option Explicit
'------------------------------------------------------------------

'★★ 実際の画像データのパスに変更
Const folderPath = "D:\Image Data"

'★★ 実際のインストールパスに変更
Const imPath = "C:\Program Files\ImageMagick-6.5.1-Q16"

Dim objShell
Set objShell = CreateObject("WScript.Shell")

Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject") 
 
Dim listFiles
listFiles = Split( objFSO.OpenTextFile( folderPath & "\list.txt" ).ReadAll(), vbNewLine )

Dim commandPath
commandPath = """" & imPath & "\convert"""

Dim i
Dim dstFilePath

For i=3 To UBound( listFiles ) Step 4
 dstFilePath = """" & folderPath & "\" & Replace( listFiles(i), ".jpg", "_All.jpg" ) & """"

  '---- リストの1番目と2番目を横に結合 ⇒ ab.jpg
 objShell.Run commandPath & " +append """ _
 & folderPath & "\" & listFiles(i-3) & """ """ _
 & folderPath & "\" & listFiles(i-2) & """ """ _
 & folderPath & "\ab.jpg""", 0, True

  '---- リストの3番目と4番目を横に結合 ⇒ cd.jpg
 objShell.Run commandPath & " +append """ _
 & folderPath & "\" & listFiles(i-1) & """ """ _
 & folderPath & "\" & listFiles(i) & """ """ _
 & folderPath & "\cd.jpg""", 0, True

  '---- リストの ab.jpg と cd.jpg を縦に結合
 objShell.Run commandPath & " -append """ _
 & folderPath & "\ab.jpg"" """ _
 & folderPath & "\cd.jpg"" " _
 & dstFilePath, 0, True

  '---- 作業ファイル(ab.jpg, cd.jpg) を削除
 If objFSO.FileExists( folderPath & "\ab.jpg" ) Then
 objFSO.DeleteFile folderPath & "\ab.jpg", True
 End If
If objFSO.FileExists( folderPath & "\cd.jpg" ) Then
 objFSO.DeleteFile folderPath & "\cd.jpg", True
 End If
Next

以上で *_All.jpg が作成されると思いますが、どうでしょうか。

◎質問者からの返答

Mookさん、ありがとうございます!

やってみたのですが、(2)、(3)でつまってしまっています。

C:\Users\naranara19>C\>CD /D "D:\Image Data"

'C\'は、内部コマンドまたは外部コマンド、

操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\Users\naranara19>D:\Image Data>DIR /B *.jpg>list.txt

'D:\Image'は、内部コマンドまたは外部コマンド、

操作可能なプログラムまたはバッチ ファイルとして認識されていません。

と出てしまいます。

どうしたらよいでしょうか?ちなみに試しとして、デスクトップ上にgazouというフォルダをつくってそのなかに画像ファイルを多数入れてみています。


また、先のご質問ですが、連結された画像はファイル内に何個かできることになっていますが、それらが名前の昇順に並び変えたときに3番目にどれもくるようにしてほしいということです。

例 P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12

とあって、P1と、P7を指定したら、それぞれ、P3-P6、P9-12と連結されたファイルが生成されると思います。

フォルダ内を並び変えたときに、

P1,P2,P3-P6,P3,P4,P5,P6,P7,P8,P9,P9-12,P9,P10,P11,P12

というようになれば幸いですという意味です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ