6201
- 收藏
- 点赞
- 分享
- 举报
OSD 显示是全黑 问题
本帖最后由 xiaonanko 于 2016-6-28 16:26 编辑
用的SDL+freetype+SDL_TTF 三个库做视频OSD
参考了论坛上关于OSD的帖子,但是出来的结果有点问题。
//转码代码--代码很常见
TTF_Font *font;
SDL_Surface *text;
/* Initialize the TTF library */
if ( TTF_Init() < 0 ) {
fprintf(stderr, "Couldn't initialize TTF: %s\n",SDL_GetError());
SDL_Quit();
return(2);
}
font = TTF_OpenFont("cu.ttf", 48); //打开字体文件以48号大小
if ( font == NULL ) {
fprintf(stderr, "Couldn't load %d pt font from %s: %s\n",
"ptsize", 18, SDL_GetError());
}
// TTF_SetFontStyle(font, 0); //字体风格
// TTF_SetFontOutline(font, 0); //字体粗细
// TTF_SetFontKerning(font, 1); //设置字距
// TTF_SetFontHinting(font, 0); //设置字体颜色
// SDL_Color forecol= { 0xFF, 0xFF, 0xFF, 0 };
SDL_Color forecol= { 0x00, 0x00, 0x00, 0 };
char *string="1992.07.20";
text = TTF_RenderUTF8_Solid(font, string, forecol); //转换位图
SDL_PixelFormat *fmt; //pixel format information strcut
fmt = (SDL_PixelFormat*)malloc(sizeof(SDL_PixelFormat));
memset(fmt,0,sizeof(SDL_PixelFormat));
fmt->BitsPerPixel = 16;
fmt->BytesPerPixel = 2;
fmt->Rmask = 0xff000000; //ARGB1555
fmt->Gmask = 0x0000ff00;
fmt->Bmask = 0x000000ff;
fmt->Amask = 0x000000ff;
fmt->colorkey = 0xffffffff;
sfmt->alpha = 0xff;
SDL_Surface *temp = SDL_ConvertSurface(text,fmt,0);
//SDL_LoadBMP
SDL_SaveBMP(text, "1.bmp");
SDL_SaveBMP(temp, "mm.bmp");
SDL_FreeSurface(temp);
SDL_FreeSurface(text);
TTF_CloseFont(font);
TTF_Quit();
////////////////////////////////////////////////////
Q(1)代码里面的fmt参数感觉不知道如何设置,出来的图片的背景不知道如何设置!之前参考别人的设置得到过蓝色背景黑色字体,但是绝大部分的掩码设置都是对应的全黑色的背景,字体根本看不见
Q(2)OSD区域大小如何和bmp图片大小匹配呢,如果我把region设置的太小,load函数里面的stride大小和图片大小不一样,会报错。
用的SDL+freetype+SDL_TTF 三个库做视频OSD
参考了论坛上关于OSD的帖子,但是出来的结果有点问题。
//转码代码--代码很常见
TTF_Font *font;
SDL_Surface *text;
/* Initialize the TTF library */
if ( TTF_Init() < 0 ) {
fprintf(stderr, "Couldn't initialize TTF: %s\n",SDL_GetError());
SDL_Quit();
return(2);
}
font = TTF_OpenFont("cu.ttf", 48); //打开字体文件以48号大小
if ( font == NULL ) {
fprintf(stderr, "Couldn't load %d pt font from %s: %s\n",
"ptsize", 18, SDL_GetError());
}
// TTF_SetFontStyle(font, 0); //字体风格
// TTF_SetFontOutline(font, 0); //字体粗细
// TTF_SetFontKerning(font, 1); //设置字距
// TTF_SetFontHinting(font, 0); //设置字体颜色
// SDL_Color forecol= { 0xFF, 0xFF, 0xFF, 0 };
SDL_Color forecol= { 0x00, 0x00, 0x00, 0 };
char *string="1992.07.20";
text = TTF_RenderUTF8_Solid(font, string, forecol); //转换位图
SDL_PixelFormat *fmt; //pixel format information strcut
fmt = (SDL_PixelFormat*)malloc(sizeof(SDL_PixelFormat));
memset(fmt,0,sizeof(SDL_PixelFormat));
fmt->BitsPerPixel = 16;
fmt->BytesPerPixel = 2;
fmt->Rmask = 0xff000000; //ARGB1555
fmt->Gmask = 0x0000ff00;
fmt->Bmask = 0x000000ff;
fmt->Amask = 0x000000ff;
fmt->colorkey = 0xffffffff;
sfmt->alpha = 0xff;
SDL_Surface *temp = SDL_ConvertSurface(text,fmt,0);
//SDL_LoadBMP
SDL_SaveBMP(text, "1.bmp");
SDL_SaveBMP(temp, "mm.bmp");
SDL_FreeSurface(temp);
SDL_FreeSurface(text);
TTF_CloseFont(font);
TTF_Quit();
////////////////////////////////////////////////////
Q(1)代码里面的fmt参数感觉不知道如何设置,出来的图片的背景不知道如何设置!之前参考别人的设置得到过蓝色背景黑色字体,但是绝大部分的掩码设置都是对应的全黑色的背景,字体根本看不见
Q(2)OSD区域大小如何和bmp图片大小匹配呢,如果我把region设置的太小,load函数里面的stride大小和图片大小不一样,会报错。
我来回答
回答6个
时间排序
认可量排序
认可0
认可0
认可0
认可0
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2018-07-04 16:16:56
-
2022-08-31 19:21:17
-
42020-09-09 08:15:40
-
102015-06-27 10:19:58
-
2019-09-20 16:32:04
-
2019-01-04 09:10:06
-
2016-03-24 16:48:16
-
2020-10-01 16:15:58
-
2016-05-12 11:03:14
-
2018-11-20 14:51:33
-
2022-07-10 15:14:57
-
2020-11-26 11:59:49
-
112016-03-10 11:10:58
-
2013-12-19 21:51:34
-
12019-04-17 16:37:10
-
92017-12-09 15:45:28
-
2019-12-02 12:00:20
-
2015-07-26 17:14:37
-
2017-05-06 16:21:26
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认