程式碼:http://59-126-75-42.hinet-ip.hinet.net/mypaper/index.php?uid=shadow&mode=view&id=1156
使用 C + libgd 作的效果
編譯指令:cc -lgd trans.c -o trans
執行 ./trans
編譯、執行的過程
執行前的 google.png
執行後,在photoimpact裡面確實是透空的影像
也可以參考php的版本:
http://59-126-75-42.hinet-ip.hinet.net/demo/php/google_transparent/
程式碼參考:
# trans.c
#include <stdio.h>
#include <gd.h>
int main(void)
{
gdImagePtr im;
FILE *fp = fopen("google.png","rb");
im = gdImageCreateFromPng(fp);
long w = gdImageSX(im);
long h = gdImageSY(im);
printf("Image Size w:%d, h:%d\n",w,h);
int white = gdImageColorAllocate(im,255,0,0);
int trans_colour = gdImageColorAllocateAlpha(im, 255, 255, 255, 127);
/*
long x=0,y=0;
for(x=0;x<w;x++)
{
for(y=0;y<h;y++)
{
int rgb = gdImageGetPixel(im, x, y);
int r = (rgb >> 16) & 0xFF;
int g = (rgb >> 8) & 0xFF;
int b = rgb & 0xFF;
int rgb_sum=r+g+b;
if(rgb_sum >= 700)
{
//gdImageSetPixel(im, x, y, trans_colour);
gdImageFill(im, x, y, trans_colour);
}
}
}
*/
gdImageFill(im, 0, 0, trans_colour);
FILE *fop = fopen("google_trans.png","wb");
gdImageAlphaBlending(im, 0);
gdImageSaveAlpha(im, 1);
gdImagePng(im,fop);
fclose(fop);
fclose(fp);
gdImageDestroy(im);
return 1;
}