- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有任何简单的方法可以将 ImageSource 添加到堆栈并从中创建视频?
最佳答案
我已经上过这样的课了。我只需要提交我的“ImageInfo”,它是一个system.DrawingBitmap。这可以通过使用以下代码轻松创建:
Public Function WpfBitmapSourceToBitmap(ByVal source As BitmapSource) As System.Drawing.Bitmap
If source Is Nothing Then Return Nothing
Dim bmp As New System.Drawing.Bitmap(source.PixelWidth, source.PixelHeight, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
Dim data As System.Drawing.Imaging.BitmapData = bmp.LockBits(New System.Drawing.Rectangle(System.Drawing.Point.Empty, bmp.Size), System.Drawing.Imaging.ImageLockMode.[WriteOnly], System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
source.CopyPixels(Int32Rect.Empty, data.Scan0, data.Height * data.Stride, data.Stride)
bmp.UnlockBits(data)
Return bmp
End Function
然后我做了一个 AviClass 向其中添加帧并将其存储为具有预选编解码器(例如 XVid MPEG4)的 AVI 文件
Public Class clsAviWriter
Inherits MAINInterface.TB.Imaging.Pia7.clsDspTemplate
Private cAvi As AviReaderWriter.AviFile.AviManager
Private AviStream As AviReaderWriter.AviFile.VideoStream
Private AudioStream As AviReaderWriter.AviFile.AudioStream
Private cFps As clsTbQueue
Private OldFpsDate As Date = Now
''' <summary>
''' The image object to paint graphical objects on it
''' </summary>
''' <value>descriptor of the image</value>
Public Overrides Property ImageInfo() As MAINInterface.TB.Imaging.Pia7.clsImageInfo
Get
Return Me._ImageInfo
End Get
Set(ByVal value As MAINInterface.TB.Imaging.Pia7.clsImageInfo)
Me._ImageInfo = value
Call WriteFrame()
Call Me.OnPropertyChanged(Me.Guid)
End Set
End Property
Private Sub WriteFrame()
Dim D As Date = Now
Dim Fps As Single
Me.cFps.Values.Add(D.Subtract(Me.OldFpsDate).Ticks)
Me.OldFpsDate = D
Me.cFps.Trim()
Fps = 1000 / New TimeSpan(Me.cFps.Average).TotalMilliseconds
Me.cFps.BufferSize = TB.Math.myTrim(Fps * 1, 1, 1000)
If Me.AviStream IsNot Nothing Then
Me.AviStream.AddFrame(Me._ImageInfo.Image.Clone)
End If
End Sub
Public Sub New()
Me.ClassDescription = "Write images into an avi file"
Me.cFps = New clsTbQueue(10)
End Sub
Private Sub InitializeAvi()
Dim W As String
Dim Fps As Single
Dim di As New IO.DirectoryInfo(TB.SystemMain.AppPath & "Avi\")
TB.FileSystem.CreateDirectories(di)
W = IO.Path.Combine(di.FullName, "Record_" & Now.Ticks.ToString("0") & ".avi")
Me.cAvi = New AviReaderWriter.AviFile.AviManager(W, False)
Dim Opts As New AviReaderWriter.AviFile.Avi.AVICOMPRESSOPTIONS
Opts.fccType = 0
Opts.fccHandler = 1684633208
Opts.dwKeyFrameEvery = 0
Opts.dwQuality = 0 '0 ... 10000
Opts.dwFlags = 8 'AVICOMRPESSF_KEYFRAMES = 4
Opts.dwBytesPerSecond = 0
Opts.lpFormat = 0
Opts.lpParms = New IntPtr(0)
Opts.cbParms = 3532
Opts.dwInterleaveEvery = 0
Fps = 1000 / New TimeSpan(Me.cFps.Average).TotalMilliseconds
'Dim bm1 As Bitmap
'bm1 = TB.Imaging.CreateReScaledImage(Me.pic.Image, New Size(Me.pic.Image.Width, Me.pic.Image.Height), False)
Me.AviStream = cAvi.AddVideoStream(Opts, Math.Floor(TB.Math.myTrim(Fps, 1, 50)), Me._ImageInfo.Image.Clone)
End Sub
Public Overrides Property Run() As Boolean
Get
Return Me._Run
End Get
Set(ByVal value As Boolean)
If Me._Run <> value Then
Me._Run = value
If Me._Run = True Then
Call InitializeAvi()
Else
If Me.cAvi IsNot Nothing Then
Me.cAvi.Close()
Me.cAvi = Nothing
Me.AviStream = Nothing
End If
End If
Call Me.OnPropertyChanged(Me.Guid)
End If
End Set
End Property
End Class
更多代码请看这里:http://www.wischik.com/lu/programmer/avi_utils.html和 MSDN或http://www.codeproject.com/KB/audio-video/avigenerator.aspx
我已经发布了源代码来展示这样的序列的外观(上面的代码需要更多不公开的引用资料)。您可以看到,您只需要初始化、添加帧、存储 FPS 值并将其安全到硬盘。
此外,如果需要,您可以搜索 DirectShow 以查看全部工作原理。
关于wpf - 从 ImageSource 创建视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6194002/
我需要从用户那里获得图像文件路径并将图像存储在我的 sql server 数据库中。 我从用户那里获取文件并使用方法转换为 byte[] public static byte[] ImageToByt
我尝试做一个功能区工具栏。我的问题是它没有找到 ImageSource。这是我的简单代码:
我想为我的表单/窗口设置背景图像 like this guy但不是磁盘上的图像文件,而是内存中的 System.Drawing.Bitmap。 我需要做这样的事情: this.Background =
如何确定 ImageSource 的大小以像素为单位? ImageSource 对象有一个 Height 和一个 Width 属性,但它们以 1/96 英寸返回大小。 最佳答案 super 旧的帖子,
我正在尝试使用本地资源将图标放入按钮中。 (C# Visual Studio 2012) 在我的项目中,我有一个名为“Resources”的文件夹,其中包含“Icons/MyIcon.png” 以下代
我在图像控件上有多重绑定(bind)。我绑定(bind)了两个属性,一个是 bool 类型(IsLogged),一个是 typeof Uri(ProfilePhoto)。 XAML:
信息: 包:flutter 的 image_picker 插件,版本 0.6.3+1 仅 Android 版本,无 IOS 问题: 这是我选择图像的方法: Future pickImage(Ima
我的问题是图像加载似乎来自应用程序资源不正确。这是代码: BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.UriS
是否有任何简单的方法可以将 ImageSource 添加到堆栈并从中创建视频? 最佳答案 我已经上过这样的课了。我只需要提交我的“ImageInfo”,它是一个system.DrawingBitmap
我有一个 WPF 登录屏幕,我想将启动图像动态加载到其中。大多数情况下图像加载正常,但可能有十分之一的图像显示损坏,如下所示。 在 XAML 中,我有一个简单的图像控件。 我是通过绑定(bind)在
我编写了一个从操作系统获取文件图标并绑定(bind)到它们的应用程序,但是自从 System.Drawing.Icon对象不能用作 ImageSource在 Image 中控制,我不得不写一个conv
我使用 LeadTools 进行扫描。 我想将扫描图像转换为字节。 void twainSession_AcquirePage(object sender, TwainAcquirePageEvent
我是 WPF 的新手,正在尝试构建一个带有工具栏和图标的基本应用程序。我正在测试来自 Infragistics 的 XamRibbon 和功能区上显示的 ButtonTool 需要 ImageSour
我在 Xamarin.Forms 中的一个页面中的图像有一些问题。 基本上,我有 5 颗星排成一排,用户可以点击其中一颗星来给出评分。我有两张不同的图片,一张是彩色星星,另一张是黑色星星。如果用户点击
我有一个以这种方式构造的组合框的简单模板:
我正在使用 Viewbox创建一组我将动态绑定(bind)到 WPF View 的图标。 我正在绑定(bind)到资源名称并使用 Converter将资源名称转换为 ImageSource . 如果资
这个问题在这里已经有了答案: Convert System.Windows.Media.ImageSource to ByteArray (1 个回答) WPF Image to byte[] (7
我正在尝试通过给定的 base 64 字符串加载图像。 我有以下 XAML 图像: 我在类页面上有这个方法,它在构造函数中的 InitializeComponent() 之后调用: public v
我的项目文件夹中有一堆 *.tif 图像..我也将它们添加到我的 visual studio 项目中位于“Templates\Team Logos”的文件夹中 现在,如果我将图像源设置为: 行得通。
我正在使用 Akavache 下面的代码来缓存图像。 返回的是一个IBitmap,如何将这个IBitmap转为ImageSource? var url = "https://ashdbhjas/ima
我是一名优秀的程序员,十分优秀!