注册 登录
编程论坛 C++教室

庆祝一下,我调了一个星期的东西

天使梦魔 发布于 2014-03-28 15:13, 749 次点击
哈,为了庆祝你们可以问我理解范围之内的问题,但我不代人作业.(就今天而已)

我有一个库,这个库提供文件打包支持,除了加密功能外还需要加入文件格式读写,其中有两个计划.
第一个是jpeg解码,第二个是ogg解码.我找了很多图形和音频编码发现这两种对于"免费","方便"是支持最好的.

K,为了使用jpeg编码,我找遍了所有东西,libjpeg,freeimage,就差opencv了(但我觉得那个好大)
后来发现MFC带有CImage类也可以处理图形数据,但悲剧的是它的接口好像是COM.而且是纯文件流封的很死.
不过在于C/C++的强大,网上找到有人采用锁内存方法,这是一种欺骗方法,让数据流接口认为是一个硬盘文件.
我弄了整整一个星期,没有附带vs以外的第三方库来读jpeg文件.累死了.

PS:
void* data;//里面放着真实的数据
FILE *=data;//另求这种实现,最好能模拟流函数比如open 或 fopen

================================================================================================
看看最后的成果(文件缩小了,但打开的时间变长了,因为要解码)
只有本站会员才能查看附件,请 登录

对比一下,如果图形越多越大,相差就越大.


http://pan.baidu.com/s/1jGv92lg
这是未启用解码的时候
http://pan.baidu.com/s/1eQEE99o
这是启用解码之后

现在我准备新做一个小游戏,有了这个方法我就可以任意加载我想要的图片了,而不是一个小程序占用几十MB这种情况.
虽然ogg部分还没解决

[ 本帖最后由 天使梦魔 于 2014-3-28 15:15 编辑 ]
7 回复
#2
hubinyes2014-03-28 18:45
#3
骚年来一发2014-03-28 20:59
#4
天使梦魔2014-03-28 21:15
教你们用两行代码做出可以和windows系统自带计算器同样强大的计算器
#include <stdlib.h>
int main(){system("calc");return 0;}


#5
wp2319572014-03-28 21:19
以下是引用天使梦魔在2014-3-28 21:15:06的发言:

教你们用两行代码做出可以和windows系统自带计算器同样强大的计算器#include <stdlib.h>
int main(){system("calc");return 0;}

不是万能的  如果calc文件被删除
#6
天使梦魔2014-03-28 21:25
以下是引用wp231957在2014-3-28 21:19:29的发言:

 
不是万能的  如果calc文件被删除
如果它被删除了,你可以理解为系统文件被破坏,可以选择恢复或者重装系统
#7
wp2319572014-03-28 21:28
自己写的还有成就感

She11没有成就感  哈哈
#8
lxlblb2014-03-30 07:42
1