掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
AVIファイルの特定フレームをBMPで保存するには…? (ID:85859)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> BitBltで可能かも知れないと言うことですが MMControlは使った経験が無いので、詳しいことはわかりませんが、 ミューズさんのソースに少し手を入れてみました。 Picture表示後、BMP保存してみてください。 この場合、Picture1からフレームサイズが得られないので、PictureBox のサイズにしました。これだと、BMPファイルのサイズに影響しますね。 (AVIFileInfo()APIを使用すれば、フレームサイズが得られます。) Option Explicit Private Declare Function BitBlt Lib "gdi32" _ (ByVal hDestDC As Long, ByVal x As Long, _ ByVal y As Long, ByVal nWidth As Long, _ ByVal nHeight As Long, ByVal hSrcDC As Long, _ ByVal xSrc As Long, ByVal ySrc As Long, _ ByVal dwRop As Long) As Long Private Sub Form_Load() MMControl1.DeviceType = "AVIVideo" MMControl1.FileName = "Download.avi" '試し用のAVIファイル MMControl1.hWndDisplay = Picture1.hWnd MMControl1.Command = "Open" MMControl1.Frames = 1 Picture1.AutoRedraw = False With Picture2 .AutoRedraw = True .Width = Picture1.Width .Height = Picture1.Height End With End Sub Private Sub Form_Unload(Cancel As Integer) MMControl1.Command = "Close" End Sub Private Sub Command1_Click() MMControl1.Command = "Plev" MMControl1.Command = "Step" With Picture2 .Picture = LoadPicture() Call BitBlt(.hDc, 0, 0, _ .ScaleWidth / Screen.TwipsPerPixelX, _ .ScaleHeight / Screen.TwipsPerPixelY, _ Picture1.hDc, 0, 0, vbSrcCopy) .Picture = .Image End With End Sub Private Sub Command2_Click() SavePicture Picture2.Image, App.Path & _ "\frame" & MMControl1.Position & ".bmp" End Sub > イメージを表示せずにBMPなどで特定のフレームを保存する avifil32.dllのAPIを駆使すれば可能ですが、かなり面倒です。 昔、どこかのサイトのサンプルを参考にして、VB6で作った憶え があるんですが、思い出せない。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.