博客已转移至个人网站(http://www.p-chao.com)
源码:
int imcover(unsigned char *imagebase,unsigned char *imageconer,int sizebase[2],int size[2],float alpha,int position);
//输入靓图图像,imagebase必须大于imageconer
//alpha为透明度,0-1之间,1为完全透明,相当于无叠加效果
//position为位置,1左上角,2右上角,3右下角,4左下角
效果展示:
转为灰度图,缩小,之后叠加在左上角
工程读取图像,转灰度图,缩放等见我的其它工程,
叠加部分的源码如下
int imcover(unsigned char *imagebase,unsigned char *imageconer,int sizebase[2],int size[2],float alpha,int position)
{
int i,j;
if(position == 4)
goto LeftLow;
else if(position == 3)
goto RightLow;
else if(position == 2)
goto RightHigh;
else
{
for( i = 0; i < size[1]; i++)
{
for(j = 0; j < size[0]; j++)
{
*(imagebase + ( i + sizebase[1] - size[1] ) * sizebase[0] + j) =
(alpha) * ( *(imagebase + ( i + sizebase[1] - size[1] ) * sizebase[0] + j) ) + (1-alpha) * ( *(imageconer + i * size[0] + j) );
}
}return 0;
}
RightHigh:
for( i = 0; i < size[1]; i++)
{
for(j = 0; j < size[0]; j++)
{
*(imagebase + ( i + sizebase[1] - size[1] ) * sizebase[0] + (j + sizebase[0] - size[0]) ) =
(alpha) * ( *(imagebase + ( i + sizebase[1] - size[1] ) * sizebase[0] + (j + sizebase[0] - size[0]) ) ) + (1-alpha) * ( *(imageconer + i * size[0] + j) );
}
}return 0;
LeftLow:
for( i = 0; i < size[1]; i++)
{
for(j = 0; j < size[0]; j++)
{
*(imagebase + i * sizebase[0] + j) = (alpha) * ( *(imagebase + i * sizebase[0] + j) ) + (1-alpha) * ( *(imageconer + i * size[0] + j) );
}
}return 0;
RightLow:
for( i = 0; i < size[1]; i++)
{
for(j = 0; j < size[0]; j++)
{
*(imagebase + i * sizebase[0] + (j + sizebase[0] - size[0]) ) = (alpha) * ( *(imagebase + i * sizebase[0] + (j + sizebase[0] - size[0]) ) ) + (1-alpha) * ( *(imageconer + i * size[0] + j) );
}
}return 0;
}