All-About調査室 Annex

ふと湧いた疑問や巷を漂うウワサを全部アバウト~に調査・検証
<OCNから漂着 流浪の調査室>

VB.netでカラー画像をお手軽Jpeg保存する

2017-12-10 12:41:13 | VB.net

前回はVB.netでTiff保存したが、今回はJpeg保存してみる。
目標は「カラーBMP画像ファイルを読み込んで画面表示し、
それをカラーJpegファイルとして保存する」だ。

まず、一番簡単なVB.netおまかせ保存だとこんなコードになる。

Imports System.Drawing.Imaging
Public Class Form1
    Private PicBox As System.Windows.Forms.PictureBox
    Private Sub Form1_Load(sender As Object, e As EventArgs) _
        Handles MyBase.Load
        ' 普通はVSのフォームデザイナでプロパティ指定する
        ' Form1
        Me.Size = New Size(350, 350)
        Me.AutoScroll = True
        ' PictureBox
        PicBox = New System.Windows.Forms.PictureBox()
        With PicBox
            .SizeMode = PictureBoxSizeMode.AutoSize
            .Image = System.Drawing.Image.FromFile("E:\Original.bmp")
        End With
        If PicBox.Image.PixelFormat <> PixelFormat.Format24bppRgb Then
            Exit Sub ' RGB24bit Color以外は処理中断
        End If

        Controls.Add(PicBox)
        PicBox.Image.Save("E:\Test01.jpg", Imaging.ImageFormat.Jpeg)
    End Sub
End Class

実質的には最後から3行目の” PicBox.Image.Save・・・ ”だけの
チョーお手軽コードである。

で、このチョーお手軽コードでJpeg保存した場合、
そのJpegファイルはどんなクオリティになるのだろうか?

以前Excel VBAで作った解析プログラムで調べてみると・・・
.netおまかせで作られたJpegファイルは
BaseLine方式 Huffman圧縮でJFIFマーカを持つという
形式としてはごく普通のJpegファイルではあるが、
サブサンプリングは4:2:0で水平垂直共に色差を間引いており、
量子化係数テーブルは以下の通りで(#0をYが、#1をCbCrが使用)
これはJFIFの量子化係数テーブルのQ=75変換と一致するもので、
クオリティとしてはよろしくない。

ではエンコーダ・パラメータ指定ではどうなるのか
-つづく-



最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。