ZBLOG

int i; FILE * out; gdImagePtr im; gdImagePtr prev =NULL; int black; im = gdImageCreate(100, 100); if (!im) { fprintf(stderr, "can't create image"); return 1; ...

要生成不透明的图片,只需将颜色分配函数gdImageColorAllocate()中的透明度参数设置为255。修改后的代码如下:

#include <stdio.h>
#include <stdlib.h>
#include "gd.h"

int main() {
    int i;
    FILE *out;

    gdImagePtr im;
    gdImagePtr prev = NULL;
    int black;

    im = gdImageCreate(100, 100);
    if (!im) {
        fprintf(stderr, "can't create image");
        return 1;
    }

    out = fopen("anim.gif", "wb");
    if (!out) {
        fprintf(stderr, "can't create file %s", "anim.gif");
        return 1;
    }

    gdImageColorAllocate(im, 255, 255, 255); /* allocate white as side effect */
    gdImageGifAnimBegin(im, out, 1, -1);

    for (i = 0; i < 20; i++) {
        int r,g,b;
        im = gdImageCreate(100, 100);
        r = rand() % 255;
        g = rand() % 255;
        b = rand() % 255;

        gdImageColorAllocate(im, 255, 255, 255); /* allocate white as side effect */
        black = gdImageColorAllocateAlpha(im, r, g, b, 0xFF); // 设置完全不透明(alpha值为0xFF)
        
        printf("(%i, %i, %i)\n", r, g ,b);
        
        gdImageFilledRectangle(im,
                               rand() % 100,
                               rand() % 100,
                               rand() % 100,
                               rand() % 100,
                               black);

        gdImageGifAnimAdd(im, out, 1, 0, 0, 10, 1, prev);

        if (prev) {
            gdImageDestroy(prev);
        }
        prev = im;
    }

    gdImageGifAnimEnd(out);
    fclose(out);

    return 0;
}

这样,生成的图片将是不透明的。注意,修改后的代码使用了gdImageColorAllocateAlpha()函数来分配带有完全不透明度(alpha值为0xFF)的颜色。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=8927

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?