⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gd_wbmp.c

📁 下载来的一个看图软件的源代码
💻 C
字号:
/*   WBMP: Wireless Bitmap Type 0: B/W, Uncompressed Bitmap   Specification of the WBMP format can be found in the file:    SPEC-WAESpec-19990524.pdf   You can download the WAP specification on: http://www.wapforum.com/    gd_wbmp.c   Copyright (C) Johan Van den Brande (johan@vandenbrande.com)   Fixed: gdImageWBMPPtr, gdImageWBMP   Recoded: gdImageWBMPCtx for use with my wbmp library   (wbmp library included, but you can find the latest distribution   at http://www.vandenbrande.com/wbmp)   Implemented: gdImageCreateFromWBMPCtx, gdImageCreateFromWBMP    ---------------------------------------------------------------------------   Parts of this code are from Maurice Smurlo.   ** Copyright (C) Maurice Szmurlo --- T-SIT --- January 2000   ** (Maurice.Szmurlo@info.unicaen.fr)   ** Permission to use, copy, modify, and distribute this software and its   ** documentation for any purpose and without fee is hereby granted, provided   ** that the above copyright notice appear in all copies and that both that   ** copyright notice and this permission notice appear in supporting   ** documentation.  This software is provided "as is" without express or   ** implied warranty.   ---------------------------------------------------------------------------   Parts od this code are inspired by  'pbmtowbmp.c' and 'wbmptopbm.c' by    Terje Sannum <terje@looplab.com>.   **   ** Permission to use, copy, modify, and distribute this software and its   ** documentation for any purpose and without fee is hereby granted, provided   ** that the above copyright notice appear in all copies and that both that   ** copyright notice and this permission notice appear in supporting   ** documentation.  This software is provided "as is" without express or   ** implied warranty.   **   ---------------------------------------------------------------------------   Todo:   gdCreateFromWBMP function for reading WBMP files   ---------------------------------------------------------------------------- */#include <gd.h>#include <gdfonts.h>#include <stdio.h>#include <stdlib.h>#include <limits.h>#include "wbmp.h"/* gd_putout   ** ---------   ** Wrapper around gdPutC for use with writewbmp   ** */voidgd_putout (int i, void *out){  gdPutC (i, (gdIOCtx *) out);}/* gd_getin   ** --------   ** Wrapper around gdGetC for use with readwbmp   ** */intgd_getin (void *in){  return (gdGetC ((gdIOCtx *) in));}/*      gdImageWBMPCtx   **  --------------   **  Write the image as a wbmp file   **  Parameters are:   **  image:  gd image structure;   **  fg:     the index of the foreground color. any other value will be    **          considered as background and will not be written   **  out:    the stream where to write */voidgdImageWBMPCtx (gdImagePtr image, int fg, gdIOCtx * out){  int x, y, pos;  Wbmp *wbmp;  /* create the WBMP */  if ((wbmp = createwbmp (gdImageSX (image), gdImageSY (image), WBMP_WHITE)) == NULL)    fprintf (stderr, "Could not create WBMP\n");  /* fill up the WBMP structure */  pos = 0;  for (y = 0; y < gdImageSY (image); y++)    {      for (x = 0; x < gdImageSX (image); x++)	{	  if (gdImageGetPixel (image, x, y) == fg)	    {	      wbmp->bitmap[pos] = WBMP_BLACK;	    }	  pos++;	}    }  /* write the WBMP to a gd file descriptor */  if (writewbmp (wbmp, &gd_putout, out))    fprintf (stderr, "Could not save WBMP\n");  /* des submitted this bugfix: gdFree the memory. */  freewbmp (wbmp);}/* gdImageCreateFromWBMPCtx   ** ------------------------   ** Create a gdImage from a WBMP file input from an gdIOCtx */gdImagePtrgdImageCreateFromWBMPCtx (gdIOCtx * infile){  /* FILE *wbmp_file; */  Wbmp *wbmp;  gdImagePtr im = NULL;  int black, white;  int col, row, pos;  if (readwbmp (&gd_getin, infile, &wbmp))    return (NULL);  if (!(im = gdImageCreate (wbmp->width, wbmp->height)))    {      freewbmp (wbmp);      return (NULL);    }  /* create the background color */  white = gdImageColorAllocate (im, 255, 255, 255);  /* create foreground color */  black = gdImageColorAllocate (im, 0, 0, 0);  /* fill in image (in a wbmp 1 = white/ 0 = black) */  pos = 0;  for (row = 0; row < wbmp->height; row++)    {      for (col = 0; col < wbmp->width; col++)	{	  if (wbmp->bitmap[pos++] == WBMP_WHITE)	    {	      gdImageSetPixel (im, col, row, white);	    }	  else	    {	      gdImageSetPixel (im, col, row, black);	    }	}    }  freewbmp (wbmp);  return (im);}/* gdImageCreateFromWBMP   ** --------------------- */gdImagePtrgdImageCreateFromWBMP (FILE * inFile){  gdImagePtr im;  gdIOCtx *in = gdNewFileCtx (inFile);  im = gdImageCreateFromWBMPCtx (in);  in->free (in);  return (im);}/* gdImageWBMP   ** ----------- */voidgdImageWBMP (gdImagePtr im, int fg, FILE * outFile){  gdIOCtx *out = gdNewFileCtx (outFile);  gdImageWBMPCtx (im, fg, out);  out->free (out);}/* gdImageWBMPPtr   ** -------------- */void *gdImageWBMPPtr (gdImagePtr im, int *size, int fg){  void *rv;  gdIOCtx *out = gdNewDynamicCtx (2048, NULL);  gdImageWBMPCtx (im, fg, out);  rv = gdDPExtractData (out, size);  out->free (out);  return rv;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -