当前位置: 技术问答>linux和unix
请教PNG图片叠加到JPG上的问题
来源: 互联网 发布时间:2016-03-07
本文导语: 请教,我想在JPG图片上叠加一个PNG图片并实现PNG的透明显示效果, Libpng是否有这样的功能? 或者是否有其他的库可以做这样的功能? 谢谢! | 不过对png图片有一定的限制.就是整个图片都使...
请教,我想在JPG图片上叠加一个PNG图片并实现PNG的透明显示效果,
Libpng是否有这样的功能?
或者是否有其他的库可以做这样的功能?
谢谢!
Libpng是否有这样的功能?
或者是否有其他的库可以做这样的功能?
谢谢!
|
不过对png图片有一定的限制.就是整个图片都使用一样的RGB.
SDL_Surface* back;//背景图片,也就是jpg图片
SDL_Surface* front;//前景图片,即png图片
SDL_Surface* screen;
SDL_Init(SDL_INIT_VIDEO);
atexit(SDL_Quit);
screen = SDL_SetVideoMode(640,480,0,SDL_SWSURFACE);
back = IMG_Load("back.jpg");
front= IMG_Load("front.png");
//假设前景图片是绿色的
SDL_SetColorKey(front,SDL_SRCCOLORKEY,SDL_MapRGB(front->format,0,255,0));
SDL_SetAlpha(front,SDL_SRCALPHA,128);
SDL_Rect src;
SDL_Rect dst;
src.x = 0;
src.y = 0;
src.w = back->w;
src.h = back->h;
dst.x = 0;
dst.y = 0;
dst.w = back->w;
dst.h = back->h;
SDL_BlitSurface(back,&src,screen,&dst);
src.w = front->w;
src.h = front->h;
dst.w = front->w;
dst.h = front->h;
SDL_BlitSurface(front,&src,screen,&dst);
SDL_Flip(screen);
SDL_Delay(5000);
SDL_FreeSurface(back);
SDL_FreeSurface(front);
return 0;
|
你可以试试SDL库以及libimage库(可能是这个名字),用于load JPG和PNG图片.
主要用到SDL_colorkey函数和SDL_blitsurface函数.
主要用到SDL_colorkey函数和SDL_blitsurface函数.
|
http://blog.chinaunix.net/u1/33226/showart_495584.html
这儿有gtk的例子,在背景上贴png 控件都ok
这儿有gtk的例子,在背景上贴png 控件都ok