by Hippo2000 (1999/4/24)
KBC.DLLをダウンロードしていただきありがとうございます。
KBC.DLLはKBC.DLLは明熊さんが開発したSaveJPG.DLL(Ver.2.00)を呼び出すことで、BMP形式のファイルをJPEG形式のファイルに変換するActiveX.DLLです。
JPEG形式の画像ファイルをBMP形式のファイルに変換するためのメソッドもついています。
一時ファイルに展開し、それを読み込むことでメモリ上に展開するようなメソッドもつけました。
KBC.DLLを使うことにより、VBやVBAといったDLLを呼び出せる言語だけでなく、VBScriptのようにDLLを直接呼び出せない言語でも簡単に画像ファイルの変換がおこなえます。
明熊さんのSaveJPG.DLLは以下のサイトなどで取得できます。
※ このプログラムではVer.2.00に対応しています。ご注意ください。
明熊工房ホームページ ダウンロードサイト
http://www.geocities.co.jp/SiliconValley/3944/Download.html
※VBやVBAで使う場合には、「参照設定」で「Hippo2000's BMP<->JPEG Convert (KBC)」を選択すると便利です。
TEST.BMPというBMP形式のファイルをTEST.JPGというJPEG形式のファイルに変換するためには、以下のように書きます。
BMPtoJPGメソッドについては、以下のリファレンスをご参照ください。
(1)VBまたはVBAの場合
Dim oKbc
Dim nRes
Set oKbc = CreateObject("KBC.Convert")
nRes = oKbc.BMPtoJPG("C:\TEST.BMP","C:\TEST.JPG")
TEST.BMPというBMP形式のJPEG形式でメモリに展開するには、以下のように書きます。
(1)ASP(VBScript)の場合
<% Option Explicit %>
<script Language="VBScript" RUNAT="Server">
'-----------------------------------------------------------------------------
'変数の宣言
'-----------------------------------------------------------------------------
Dim oKbc
Dim nRes
'-----------------------------------------------------------------------------
'KBCオブジェクトの作成、ビットマップをJPEGに変換してメモリに展開
'-----------------------------------------------------------------------------
Set oKbc = CreateObject("KBC.Convert")
nRes = oKbc.ToMemoryJPG("C:\TEST.BMP")
'-----------------------------------------------------------------------------
'Responseを返す
'-----------------------------------------------------------------------------
Response.ContentType = "image/jpeg"
Response.BinaryWrite oKbc.Memory
Set oKbc = Nothing
</script>
(2)Perl(ActivePerl)の場合
use strict;
use Win32::OLE;
#
my $oKbc;
my $nRes;
#-----------------------------------------------------------------------------
#1. KBCオブジェクトの生成
#-----------------------------------------------------------------------------
#KBCはシングルスレッドなので以下のメソッドを呼び出さないとうまく終了しません
Win32::OLE->Initialize(Win32::OLE::COINIT_APARTMENTTHREADED);
$oKbc = Win32::OLE->new('KBC.Convert') or print "KBCの登録ができていないようです!!";
#-----------------------------------------------------------------------------
#2. ビットマップをJPEGに変換してメモリに展開#-----------------------------------------------------------------------------
$nRes = $oKbc->ToMemoryJPG("C:\TEST.BMP");
#-----------------------------------------------------------------------------
#3. イメージを表示する
#-----------------------------------------------------------------------------
binmode(STDOUT);
print <<EOF;
Content-Type: image/jpeg
EOF
print $oKbc->Memory;
KBCにはConvertクラスが定義されています。
Convertクラスのメソッド、プロパティには以下のものがあります。
| BMPtoJPG | M | BMP形式のファイルをJPEG形式のファイルに変換します。 |
| JPGtoBMP | M | JPEG形式のファイルをBMP形式のファイルに変換します。 |
| Memory | P(r) | ToMemoryBMP,ToMemoryJPGで展開されたイメージを格納します。 |
| ToMemoryBMP | M | JPEG形式のファイルをBMP形式のファイルに変換し、メモリに展開します。 |
| ToMemoryJPG | M | BMP形式のファイルをJPEG形式のファイルに変換し、メモリに展開します。 |
種類 :メソッド
概要
BMP形式のファイルをJPEG形式に変換し、ファイルに出力します。
呼出
Public Function BMPtoJPG(vBmpF As Variant,
vJpgF As Variant, _
Optional vRate As Byte = 80,
Optional vPrgrs As Variant = False) As Long
戻り値
処理結果
0 正常終了 -1 指定されたファイルがないなど -2 指定されたファイルが空 -3 vRateの設定範囲がずれている -4 vPrgrsがBOOL値ではない 1 ファイルがオープンできない(SaveJPG.DLL) 2 ファイルが書き込めない(SaveJPG.DLL) 3 ファイルのフォーマットエラー(SaveJPG.DLL) 4 スタックオーバーフロー(SaveJPG.DLL)
引数
引数名 |
I/O |
必須 |
説明 |
| vBmpF | I |
○ |
変換対象のファイル名(BMP形式) |
| vJpgF | I |
○ |
出力ファイル名(JPEG形式) |
| vRate | I |
圧縮率 1〜100の数値 大きいほど高品質、低圧縮 (デフォルト80) |
|
| vPrgrs | I |
プログレッシブ化 (TrueまたはFalse) |
種類 :メソッド
概要
JPEG形式のファイルをBMP形式に変換し、ファイルに出力します。
呼出
Public Function JPGtoBMP(vJpgF As Variant,
vBmpF As Variant) As Long
戻り値
処理結果
0 正常終了 -1 指定されたファイルがないなど -2 指定されたファイルが空 -3 LoadPictureでのエラー -4 SavePictureでのエラー
引数
引数名 |
I/O |
必須 |
説明 |
| vJpgF | I |
○ |
変換対象のファイル名(JPEG形式) ※ VBのLoadPictureで読み取れるものであればなんでもOKのはずですが。 |
| vBmpF | I |
○ |
出力ファイル名(BMP形式) |
種類 :メソッド
概要
指定された画像ファイルをJPEG形式に変換し、Memoryプロパティに出力します。(JPEG形式)
呼出
Public Function ToMemoryJPG(vBmpF As Variant,
Optional vRate As Byte = 80,
Optional vPrgrs As Variant = False) As Long
戻り値
処理結果(0:正常終了、0以外:エラー BMPtoJPGの戻り値)
引数
引数名 |
I/O |
必須 |
説明 |
| vBmpF | I |
○ |
変換するファイル名(BMP形式) |
| vRate | I |
圧縮率 1〜100の数値 大きいほど高品質、低圧縮 (デフォルト80) |
|
| vPrgrs | I |
プログレッシブ化 (TrueまたはFalse) |
種類 :メソッド
概要
指定された画像ファイルをBMP形式に変換し、Memoryプロパティに出力します。
呼出
Public Function ToMemoryBMP(vJpgF As Variant) As Long
戻り値
処理結果(0:正常終了、0以外:エラー JPGtoBMPの戻り値)
引数
引数名 |
I/O |
必須 |
説明 |
| vJpgF | I |
○ |
変換するファイル名(JPEG形式) |
種類: プロパティ(ReadOnly)
説明
直前に実行されたToMemoryBMP、ToMemoryJPEGメソッドにより設定されたバーコードイメージを保持します。
電子メールアドレス
GCD00051@nifty.ne.jp
Web アドレス
http://homepage3.nifty.com/hippo2000
このページに関する感想や提案などをメールにてお送りください