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

ディスプレイが故障してしまったため、パソコン切替器を購入して、近年購入した二台目のパソコンと連結してディスプレイを共用できるようにしました。
そのディスプレイが、1920×1080のため、壁紙を適用すると、横に引き延ばされて表示されてしまいます。
検索して見つけた壁紙用リサイズソフトでは、かべHDが望む処理を行えるものの、複数のファイルをまとめて処理することに対応していません。
そこで、このソフトに複数のファイルをまとめて処理させるうまい方法をおしえてください。

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


●質問者: iichico
●カテゴリ:コンピュータ インターネット
○ 状態 :キャンセル
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook

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 を実行すると、実行フォルダ下に変換画像というフォルダが作成され、その下に画像が保存されます。


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


iichicoさんのコメント
コメントに書いた理由から、壁紙のリサイズを行う必要はなくなりましたが、 かべHDのように、中央に配置されたとき、余ってしまう両サイドを 何らかのエフェクト処理をして補完することは、このコンバーターでも可能でしょうか。

TransFreeBSDさんのコメント
>|| objShell.Run """C:\Program Files\ImageMagick-6.7.8-Q16\convert.exe"" """ & f.Path & """ -resize 1920x1080 """ & Replace( f.Path, f.Name, "変換画像\" & f.Name ) & """" ,, true ||< を >|| objShell.Run """C:\Program Files\ImageMagick-6.7.8-Q16\convert.exe"" """ & f.Path & """ -resize 1920x1080 ( +clone -resize 1920!x1080! -colorspace Gray -blur 0x30 ) +swap -gravity Center -composite """ & Replace( f.Path, f.Name, "変換画像\" & f.Name ) & """" ,, true ||< こんな感じかな? 補完する背景が固定でよければ >|| objShell.Run """C:\Program Files\ImageMagick-6.7.8-Q16\convert.exe"" background.jpg """ & f.Path & """ -resize 1920x1080 -gravity Center -composite """ & Replace( f.Path, f.Name, "変換画像\" & f.Name ) & """" ,, true ||< かな?

iichicoさんのコメント
すごいです、かべHDの処理と全く同じどころか、グレースケールを指定できるとは。 これで十分使えるものになりました。 あと、拡張子を複数指定する方法ですが、 "jpg" "png" と指定すると、Thenが見つからないと怒られてしまいました。 どのようにすれば良いのでしょうか。

iichicoさんのコメント
拡張子毎に同じファイルを作って使えということなのでしょうか。 おしえていただいた手法についてのポイントは、アカウントへ送信することでお送りいたします。 受け取られましたらコメントへお返事ください。

Mookさんのコメント
しばらく見れなかったので、コメント対応できずにすみません。 ポイントメッセージいただきました。 ありがとうございます。 拡張子の対応は、 If fso.GetExtensionName( f.Path ) = "jpg" _ Or fso.GetExtensionName( f.Path ) = "bmp" _ Or fso.GetExtensionName( f.Path ) = "png" _ Or fso.GetExtensionName( f.Path ) = "gif" Then のように条件を Or でとればやれるかと思います。

iichicoさんのコメント
ご指摘の対応方法ですと、文字が正しくありません。というエラーが発生します。 VBSでは、複数条件の指定は難しいものなのでしょうか。

iichicoさんのコメント
書き込んですぐですが、実行できました。 エラー位置の表示が、13行目の1文字目を示していて、そこに[空白][空白]Ifとあったので、空白を削除して試してみたら実行できた次第です。 上のプログラム表記からでは、インデントが空白に変換されてしまい、それが行頭の余分な空白としてエラーを起こしていたのかもしれません。 [行頭]If[空白]fso.GetExtensionName([空白]f.Path[空白])[空白]=[空白]"jpg"[空白]_[空白][改行] [行頭][空白]Or[空白]fso.GetExtensionName([空白]f.Path[空白])[空白]=[空白]"png"[空白]_[空白][改行] [行頭][空白]Or[空白]fso.GetExtensionName([空白]f.Path[空白])[空白]=[空白]"gif"[空白]Then

2 ● u_u-zzz

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

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

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

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

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

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

関連質問

●質問をもっと探す●



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