ディスプレイが故障してしまったため、パソコン切替器を購入して、近年購入した二台目のパソコンと連結してディスプレイを共用できるようにしました。

そのディスプレイが、1920×1080のため、壁紙を適用すると、横に引き延ばされて表示されてしまいます。
検索して見つけた壁紙用リサイズソフトでは、かべHDが望む処理を行えるものの、複数のファイルをまとめて処理することに対応していません。
そこで、このソフトに複数のファイルをまとめて処理させるうまい方法をおしえてください。

別ソフトでまとめて処理できる方法をおしえていただいてもかまいませんが、その場合は以下の条件を必ず守ってください。
・画像を引き伸ばしてリサイズするのではなく、リサイズ後のサイズにしたとき、足りない空白部分を何らかの画像処理によって補完できること(かべHDのように、ボックス調節でサイドをくもりガラスで補完する手法をできることがベストです)
・画像の上下を切り取る処理方法は論外、楯サイズ1080以下の画像でも補完してリサイズできること
・複数のファイルをまとめて処理できること
・設定方法などをできるだけ明記すること(フォトレタッチソフトなどのソフトは特に)

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/07/10 21:50:07
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ImageMagic をインストールする。
Windows であれば、下記の
  ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/binaries/
からどちらか(OSに合わせて)をダウンロードし、インストール。
  ImageMagick-6.7.8-2-Q16-windows-dll.exe
  ImageMagick-6.7.8-2-Q16-windows-x64-dll.exe


下記の convet.exe の部分を実際のインストールパスに書き換えて、resizer.vbs として保存する。

'// スクリプトと同じフォルダに置いたJpg画像を変換し、「変換画像」フォルダ下に保存する

Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")

cPath = FSO.GetAbsolutePathName(".")

If fso.FolderExists( cPath & "\変換画像" ) = False Then
    fso.CreateFolder cPath & "\変換画像"
End If

For Each f In fso.GetFolder(cPath).Files
    If fso.GetExtensionName( f.Path ) = "jpg" Then 
'★ 実際のインストールパスに変更
         objShell.Run """C:\Program Files\ImageMagick-6.7.8-Q16\convert.exe"" """ & f.Path & """ -resize 1920x1080 """ & Replace( f.Path, f.Name, "変換画像\" & f.Name ) & """" ,, true
    End If
Next

変換したいファイルとスクリプトを同じフォルダに置き、ダブルクリックで vbs を実行すると、実行フォルダ下に変換画像というフォルダが作成され、その下に画像が保存されます。


拡張子やサイズは実際に合わせて変更してください。

他5件のコメントを見る
id:iichico

ご指摘の対応方法ですと、文字が正しくありません。というエラーが発生します。

VBSでは、複数条件の指定は難しいものなのでしょうか。

2012/07/13 09:01:58
id:iichico

書き込んですぐですが、実行できました。
エラー位置の表示が、13行目の1文字目を示していて、そこに[空白][空白]Ifとあったので、空白を削除して試してみたら実行できた次第です。
上のプログラム表記からでは、インデントが空白に変換されてしまい、それが行頭の余分な空白としてエラーを起こしていたのかもしれません。

[行頭]If[空白]fso.GetExtensionName([空白]f.Path[空白])[空白]=[空白]"jpg"[空白]_[空白][改行]
[行頭][空白]Or[空白]fso.GetExtensionName([空白]f.Path[空白])[空白]=[空白]"png"[空白]_[空白][改行]
[行頭][空白]Or[空白]fso.GetExtensionName([空白]f.Path[空白])[空白]=[空白]"gif"[空白]Then

2012/07/13 09:35:48
id:u_u-zzz No.2

回答回数93ベストアンサー獲得回数9

余ってしまう両サイドを何とかしたいということであれば、こんなやり方も…

デスクトップを右クリック → 個人設定
この時、[デスクトップの背景] には設定した壁紙がサムネイル表示されていると思います。

変更するのは、その隣の [ウィンドウの色] です。
[ウィンドウの色とデザイン] 画面が立ち上がったら、
指定する部分にデスクトップ、色1をクリックして壁紙に合うカラーを設定。

私の場合は、1ヶ月のカレンダーを壁紙にしているのですが、やはり余白ができてしまうので、壁紙の背景色とウィンドウの色を同化させています。

壁紙に使われている画像の色を知りたければ、RGB値取得ソフトですぐに分かります。
http://freesoft-100.com/pasokon/rgb.html
画像処理ソフトに、RGB値を表示する機能が搭載されているものもありますし…

高度なエフェクト処理というわけではありませんが、見栄えはそれなりに整うのではないでしょうか。

  • id:seble
    デスクトップの設定、osの壁紙の設定で「中央に表示」にしてやれば引き延ばされる事はありません。
    画像サイズが小さいと背景が出ますがそれで構わないようですし、モニタサイズより大きい画像を選択すれば、はみ出し部分がカットされるだけでトリミング効果になるだけです。それほどは問題にならない気が・・・
  • id:Mook
    縦フィットでサイズ変換したいということであれば、ImageMagic で
    convert a.jpg -resize 1920x1080 b.jpg
    のようにすれば、短い方にフィットして変換します。

    コマンドラインで変換できるので、バッチで実行すれば一括変換が可能です。
    http://www.imagemagick.org/script/index.php
  • id:iichico
    検索範囲を壁紙に関するソフトに広げて検索したら、ぬこ壁紙チェンジャーという壁紙変更ソフトが見つかりました。
    このソフトは、アスペクト比を維持したまま壁紙の画像を拡大表示できるので、壁紙自体をリサイズする必要がなくなってしまいました。
  • id:TransFreeBSD
    If fso.GetExtensionName( f.Path ) = "jpg" Then
    これを
    If fso.GetExtensionName( f.Path ) = "jpg" And fso.GetExtensionName( f.Path ) = "png" Then
    ですかね。たぶん。
  • id:TransFreeBSD
    今更ですが上記、andじゃなくorでしたね。

    空白の件は、数ではなく、所謂全角の空白があったからだと思います。
    比較や表示等のため以外では全角の空白は使えないのです。
    半角の空白なら幾つあってもエラーになりません。
    ここのコメントでは半角空白では表示を揃える事が出来ないので、Mookさんは全角使ってますが、実際は全部半角じゃないとダメなんです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません