zoukankan      html  css  js  c++  java
  • 怎样在vc6.0中使用gd库函数gdImageGif 或gdImagePng 输出到磁盘文件中

    在vc6.0中使用gd库遇到的问题:
    调用BGD_DECLARE(void) gdImageGif (gdImagePtr im, FILE * out);
    BGD_DECLARE(void) gdImagePng (gdImagePtr im, FILE * out);等与FILE*相关的函数时就会出错。
    原因:在
    http://www.boutell.com/gd/faq.html中有一句
    because no FILE * objects are passed across the DLL boundary.
    FILE*指针对象不能传递给dll。

    解决方法:
    向将img数据写入缓冲区中,然后再将缓冲区中数据写入磁盘文件中。下面给出了代码:
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <stdlib.h>
    void mySavePng(char *filename,
    gdImagePtr im)
    {
    FILE *out;
    int size;
    char *data;
    out = fopen("filename, "wb");
    if (!out) {
    /* Error */
    }
    data = (char *) gdImagePngPtr(im, &size);
    if (!data) {
    /* Error */
    }
    if (fwrite(data, 1, size, out) != size) {
    /* Error */
    }
    if (fclose(out) != 0) {
    /* Error */
    }
    gdFree(data);
    }
    
    Jpeg类似只需要将data = (char *) gdImagePngPtr(im, &size);
    变成data = (char *) gdImageJpegPtr(im, &size,-1);就可以了。

    OK!搞定了吧。
    还有问题参考http://www.boutell.com/gd/faq.html就可以解决了。
  • 相关阅读:
    Java 在线/离线 文档
    Java集合框架全解
    【LeetCode】204.计数质数
    深入SpringMvc
    SpringMvc基础
    SSM整合
    Spring注解
    SpringAop编程
    2路插入排序
    Matplotlib绘图库简要介绍
  • 原文地址:https://www.cnblogs.com/mazhenyu/p/457246.html
Copyright © 2011-2022 走看看