画像データの拡大、縮小

解決


びっとまっぷ  2005-08-26 16:04:39  No: 91818  IP: [192.*.*.*]

開発環境はWindows2K pro  VB.NET 2003

bmpやjpeg形式の画像を読み込んで、
拡大・縮小をしてファイルに保存する方法でありますでしょうか。
pictureboxに画像を読み込んでも
サイズが変わりません。(表示は変わりますが・・)

イメージ的には、
ペイントツールの変形メニューの伸縮です。

よろしくお願いします。

編集 削除
ガッ  2005-08-26 16:40:25  No: 91819  IP: [192.*.*.*]

C#で書いてみました。

public static void SaveImage(string filename, double wzoom, double hzoom)
{
    try
    {
        Image im = Image.FromFile(filename);
        int neww = (int)(im.Width * wzoom), newh = (int)(im.Height * hzoom);
        Bitmap b = new Bitmap(neww, newh);
        Graphics g = Graphics.FromImage(b);
        g.DrawImage(im, new Rectangle(0, 0, neww, newh));
        b.Save(filename + "renew.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
    }
    catch (Exception e)
    {
    }
}

編集 削除
びっとまっぷ  2005-08-26 17:11:39  No: 91820  IP: [192.*.*.*]

ありがとうございます。
上のソースをVBに書き換えたところ
出来ました。

ただ、出来たビットマップのファイルの形式が
24bitRGBから32bitαRGBに変わってしまいました。
(ファイルのプロパティを見ると、
「Windows 3.x ビットマップ」から「Windows or OS/2 bitmap」へ)

24bitRGB形式でファイル出力させたいのですが
可能でしょうか。

編集 削除
ガッ  2005-08-26 17:29:09  No: 91821  IP: [192.*.*.*]

…私は.NETを良く知らないので、あやふやな回答しか出来ませんが、
ImageFormatを変えれば出来るかもしれません。

※最後の手段としてビットマップファイルを自力で作れば可能ですが、
  その手段も、変換するフリーのコンバータがあれば一発ですね…

編集 削除
びっとまっぷ  2005-08-26 18:59:25  No: 91822  IP: [192.*.*.*]

ImageFormatというより
PixelFormatをFormat24bppRgbにセットした
Bitmapのインスタンスを用意して
それにファイルを読み込ませたんですが
うまくいきませんでした。

結局、
4バイトずつαRGBデータ(メモリ上ではBGRα)を
RGBの順番に変更してRGBに変更してみます。

ありがとうございます。

編集 削除