Avi视频生成缩略图时,提示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”
需求:录制Avi格式视频成功后,使用DirectShow生成缩略图,由于视频录制时,宽高分辨率可调节,所以有些情况下,生成缩略图会抛出异常“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”。
异常位于代码段:bmp = new Bitmap(width, height, stride, System.Drawing.Imaging.PixelFormat.Format24bppRgb, hImage);之后。只要对此bmp图像进行操作就会有异常抛出。
于是,查阅msdn关于bitmap类的介绍,如下:
用指定的大小、像素格式和像素数据初始化 Bitmap 类的新实例。
public Bitmap (
int width,
int height,
int stride,
PixelFormat format,
IntPtr scan0
)
参数
- width
新 Bitmap 的宽度(以像素为单位)。
- height
新 Bitmap 的高度(以像素为单位)。
- stride
指定相邻扫描行开始处之间字节偏移量的整数。这通常(但不一定)是以像素格式表示的字节数(例如,2 表示每像素 16 位)乘以位图的宽度。传递给此参数的值必须为 4 的倍数。
- format
新 Bitmap 的 PixelFormat 枚举。
- scan0
指向包含像素数据的字节数组的指针。
根据说明Stride必须为4的倍数,于是限定设置的宽高必须为4的倍数,之后生成的avi在缩略图时不再异常,问题解决。
说明:如有更好方法欢迎指出。谢谢。
Avi视频生成缩略图时,提示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的更多相关文章
- C#远程连接sqlserver时,尝试读取或写入受保护的内存
管理员身份运行 cmd -> 输入 netsh winsock reset
- Sql Server尝试读取或写入受保护的内存。这通常指示其他内存已损坏
今日遇到这样一个问题,用vs2010调试C#代码时,只要代码一运行到跟数据库关联的地方时,编译器就报错误,给的提示如:调试器已附加,要继续需要分离什么的,咋一看还以为是vs中调试器设置的问题,可后来仔 ...
- windows7 Sql server 2012 尝试读取或写入受保护的内存。这通常指示其他内存已损坏的修复
项目中,使用了sql server2012数据库,服务端是2012,客户端如果是2008的话,就会报错: 索引错误. 没办法,就安装了sql server2012客户端.但是还是报错,无法连上数据库服 ...
- AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
在使用SqlConnection.Open()连接到SQL Server 2008 R2 SP2时,一直报以下异常: AccessViolationException: 尝试读取或写入受保护的内存.这 ...
- System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
系统debug时出现错误,System.AccessViolationException: 尝试读取或写入受保护的内存.这通常指示其他内存已损坏. Attempted to read or write ...
- SQL2012尝试读取或写入受保护的内存。这通常指示其他内存已损坏
SQL2012尝试读取或写入受保护的内存.这通常指示其他内存已损坏 今天打开SQL2012,突然就连接不了数据库,一开始还以为是某个服务器崩溃了,结果试了好几个,都还是如此,弹出提示如下: 尝试读取或 ...
- C#,调用dll产生 "尝试读取或写入受保护的内存 。这通常指示其他内存已损坏。"的问题
由于易语言与c#做的DESC加解密方式,返回的数据不一致,所以,我用易语言写了一个dll,供c#调用, 结果在post的时候,有时候能正确返回数据,有时候则不能正常返回,而是返回空数据(c#没有做异常 ...
- 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。(System.Data)
Sql server2012连接Sql server2008时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误.(provider:SSLProvider,error:0-接收到的消息异常, ...
- asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法
来源:http://ajxfxb.blog.163.com/blog/static/56675086201411634336878/ 作者是:没完没了的工作 asp.net报错“尝试读取或写入受保护的 ...
随机推荐
- bootstrap瀑布流代码
<extend name="Base/common" /> <block name="search-cate"> <include ...
- php 随机显示据今天30天内的任意一天
function randomDate() { //echo date( "Y-m-d H:m:s", $newtime); //echo date("Y-m-d H:m ...
- MySql存储过程—3、变量
1.变量的定义 在Mysql里面可以像我们写代码中一样定义变量来保持中间结果,看下面的格式: DECLARE variable_name datatype(size) DEFAULT default_ ...
- python学习第一课要点记录
写在要点之前的一段话,留给将来的自己:第一次参加编程的培训班,很兴奋很激动,之前都是自己在网上找免费的视频来看,然后跟着写一些课程中的代码,都是照着模子写,没有自己过多的思考.感觉这样学不好,除了多写 ...
- insert 和 if x is not None
insert(位置,元素) #!/usr/bin/python aList = [123, 'xyz', 'zara', 'abc'] aList.insert( 3, 2009) print &qu ...
- 蓝牙-b
最近智能家居比较火,好多公司开始开发通过蓝牙对智能家居进行连接控制!下面,我就把自己总结的蓝牙方面的知识分享一下!求吐槽!!!!O(∩_∩)O... 1.导入头文件#import <CoreBl ...
- java指纹识别+谷歌图片识别技术
http://www.icodeguru.com/3/2451.html http://valseonline.org/thread-124-1-1.html
- POJ1159 Palindrome(dp)
题目链接. 分析: 感叹算法的力量. 方法一: 设 dp[i][j] 为字符串 s, 从 i 到 j 需要添加的最少字符数. 那么如果 s[i] == s[j], dp[i][j] = dp[i+1] ...
- 发布WebService到IIS和调用WebService
一:在项目上右键单击,选择发布,如图 二:可以单击重命名,自定义网站的名字,发布方式为:文件系统,目标路径为要发布的文件的位置,它需要放到IIS的目录下面的 三:打开IIS管理器,右键单击网站,添加网 ...
- 查看Linux发行版的名称和版本号
Method #1: /etc/*-release file 在Terminal中执行命令: cat /etc/*-release 我的输出结果: DISTRIB_ID=Ubuntu DISTRIB_ ...