スマホのスクショ(PNG)が重たいので JPG に一括変換するスクリプト

いまさらながらスマホのスクショの PNG ファイルが結構なサイズであることに気がつきました。私はこのブログでスマホゲームの攻略も書いているため、よくスクショを撮ります。とったスクショは以前紹介した px サイズを変更する vbs で一括処理しています。

この px サイズ変更に加えて、PNG ファイルを JPG ファイルに変換しファイルのサイズ(容量)縮小も併せて行う vbs プログラムを作成したのでこの記事で紹介します。

以前紹介した、画像ファイルの px サイズ変更の記事は以下↓↓↓↓

嫁さんがブログに上げる写真のサイズの変更方法がわからないし、面倒くさいということだったので、Windowsの標準機能で動くツールをvbsで作成しました。 ツールをダウンロ...

PNG 形式と JPG 形式の違い

私自身は画像に関してはあまり詳しくないため、最も気になる PNG 形式と JPG 形式の違いについて、自分の後学と備忘録のために調べたことを完結にまとめます。

大きな違いは、圧縮方法で PNG は可逆圧縮 で JPG は不可逆圧縮 です。これを簡単に説明するために、同じBMP(ビットマップ/非圧縮の画像)ファイルを PNG形式と JPG形式で圧縮保存する場合を考えます。PNG はファイルサイズが大きくなりがちですが画質を維持できます。JPG はファイルサイズを小さくできる代わりに画質が落ちる傾向があります。これは、JPG の圧縮がデータを捨てているためです。(画像は圧縮保存する度に劣化し元に戻せない。)

それぞれどのような画像に使い分けるのかというと、一般的に言われているのは、PNG は「イラスト」や「テキスト文字」が得意です。JPG は「写真」や「グラデーション系画像」が得意です。

PNG 形式と JPG 形式の画像を比較

なるほど、だからテキストも多く入るスクリーンショットは PNG で保存されるんですね。肝心の画像を実際に比較してみましょう。同じスクリーンショットを今回紹介するツールで JPG にしたものと、前回紹介したツールで 同じpxサイズにカットしたもの(PNG)です。サイズが全然違う割に、見た目にはあまりわかりません。通常は左の大きさで使います。右がWindows のフォトアプリで拡大したもので、クリックすると画質が落ちているのがわかります。

PNG(799×1422/2.06MB):

JPG(799×1422/197KB):

拡大すると JPG  は輪郭が にじんでいるのがわかりますね。拡大しないと肉眼ではわからない程度なので、私は最終的にインターネットに上げる画像を JPG にするのが良いかなと思いました。

スポンサーリンク

JPG変換のソースコード紹介と解説

それでは、PNG を JPG 形式に変換するコードを紹介します。(※ PNG を JPG に変換するコードのみです。pxサイズの変更は書いていません。単体では動きません。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Function convert2Jpeg(input)
  Dim objImg
  Dim objIp
  Dim output

  convert2Jpeg = false

  input  = objFso.GetAbsolutePathName(input)
  output = objFso.GetParentFolderName(input) & "\" & objFso.getBaseName(input) & ".jpg"

  if objFso.FileExists(input) And Not objFso.FileExists(output) then
    ' ファイル読み込み
    Set objImg  = CreateObject("WIA.ImageFile")
    objImg.LoadFile(input)
   
    ' 変換
    Set objIp  = CreateObject("WIA.ImageProcess")
    objIp.Filters.Add(objIp.FilterInfos("Convert").FilterID)
    objIp.Filters(1).Properties("FormatID").Value = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
    Set objImg = objIp.Apply(objImg)
   
    ' ファイル書き込み
    objImg.SaveFile(output)
   
    objImg = null
    objIp = null
    convert2Jpeg = true
  End If
End Function

ツールのダウンロード

「PNGをJPGに変換」と同時に「指定のpxサイズ」へ変換するツールは以下からダウンロードできます。指定サイズを100% まはた、変換元と同じ幅を指定した場合、JPG 変換のみ行います。
JPG保存_PX縮尺率指定版
JPG保存_PX横幅指定版

使い方

元ファイルは変更されないように作成していますが、特に初回は念のためバックアップをとってご利用ください。

ダウンロードしたファイルを解凍します。.vbsファイルが1つ出てきます。
.vbsファイルに対象の画像ファイルまたは、フォルダをドラック&ドロップします。
ツールと同じディレクトリにoutというフォルダが作成されます。
拡縮比または、横幅を指定をして「OK」をクリックしてください。
処理が終了したら終了ダイアログが出ます。outの中に、同じファイル名でサイズ変更されたファイルが入ります。

zipファイルを解凍せずに、ドラック&ドロップの利用はできません。