zoukankan      html  css  js  c++  java
  • 让图片在浏览器中只有被选中后才能看清

    [图片上传失败] 

    每隔一个像素进行反色而已

    /*

    File:      magicpic.c
    Name:      让图片在浏览器中只有被选中后才能看清
    Author:    zyl910
    Blog:      http://blog.csdn.net/zyl910/
    Version:   V1.0
    Updata:    2006-12-27

    */

    #include <stdio.h>
    #include <conio.h>
    #include <dos.h>

    typedef unsigned char BYTE;
    typedef unsigned int  WORD;
    typedef unsigned long DWORD;
    typedef BYTE _far  *LPBYTE;
    typedef WORD _far  *LPWORD;
    typedef DWORD _far *LPDWORD;

    typedef long LONG;

    typedef struct tagBITMAPFILEHEADER { // bmfh
     WORD    bfType;
     DWORD   bfSize;
     WORD    bfReserved1;
     WORD    bfReserved2;
     DWORD   bfOffBits;
    } BITMAPFILEHEADER;

    typedef struct tagBITMAPINFOHEADER{ // bmih
     DWORD  biSize;
     LONG   biWidth;
     LONG   biHeight;
     WORD   biPlanes;
     WORD   biBitCount;
     DWORD  biCompression;
     DWORD  biSizeImage;
     LONG   biXPelsPerMeter;
     LONG   biYPelsPerMeter;
     DWORD  biClrUsed;
     DWORD  biClrImportant;
    } BITMAPINFOHEADER;
    #define BI_RGB 0

    typedef struct tagRGBQUAD { // rgbq
     BYTE    rgbBlue;
     BYTE    rgbGreen;
     BYTE    rgbRed;
     BYTE    rgbReserved;
    } RGBQUAD;

    int main(int argc, char* argv[])
    {
     FILE *hf;
     BITMAPFILEHEADER bf;
     BITMAPINFOHEADER bi;
     long pLine, pCur;
     long ipixelbytes;
     long iscanbytes;
     int bline, b;
     BYTE byBuf[3];
     int i,j,k;

     printf("MagicPic V1.0 Copyright (c) 2006 by zyl910/n/n");

     if (argc < 2)
     {
      printf("Syntax: magicpic [filename]/n");
      return 0;
     }

     if ((hf=fopen(argv[1],"rb+"))==NULL)
     {
      printf("Can't Open File!/n");
      return 0;
     }

     do{
      if (!fread(&bf,sizeof(BITMAPFILEHEADER),1,hf))
      {
       printf("Error: BITMAPFILEHEADER/n");
       break;
      }

      if(0x4d42!=bf.bfType) // BM
      {
       printf("Error: Only BMP/n");
       break;
      }

      if (!fread(&bi,sizeof(BITMAPINFOHEADER),1,hf))
      {
       printf("Error: BITMAPINFOHEADER/n");
       break;
      }

      if(40!=bi.biSize)
      {
       printf("Error: Only BITMAPINFOHEADER/n");
       break;
      }

      if (bi.biWidth<=0 || bi.biHeight<=0)
      {
       printf("Error: Width/Height/n");
       break;
      }

      if (BI_RGB!=bi.biCompression || !(bi.biBitCount==24 || bi.biBitCount==32))
      {
       printf("Error: Only True Color(24bit/32bit)/n");
       break;
      }

      pLine = ftell(hf);
      ipixelbytes = bi.biBitCount / 8;
      iscanbytes = (ipixelbytes * bi.biWidth + 3) & -4;
      bline = (bi.biHeight ) & 1;
      for (i=0; i<bi.biHeight; i++)
      {
       pCur = pLine;
       b = bline;
       for(j=0; j<bi.biWidth; j++)
       {
        if (b)
        {
         fseek(hf, pCur, SEEK_SET);
         fread(&byBuf[0], 1, 3, hf);
         // 反色
         byBuf[2] = ~byBuf[2]; // R
         byBuf[1] = ~byBuf[1]; // G
         byBuf[0] = ~byBuf[0]; // B
         // 修改
         fseek(hf, pCur, SEEK_SET);
         fwrite(&byBuf[0], 1, 3, hf);
        }
        pCur += ipixelbytes;
        b = b^1;
       }
       pLine += iscanbytes;
       bline = bline^1;
      }
      printf("Succeed!/n");

     }while(0);
     fclose(hf);

     return 0;
    }

  • 相关阅读:
    postman 调试接口报“401 身份认证信息未提供”错误
    UserWarning: XXX is writable by group/others and vulnerable to attack when used with get_resource_filename.
    以root权限执行python时候脚本时候报错“ExtractionError: Can't extract file(s) to egg cache”
    django接口调试示例说明
    查看linux系统版本、内存、CPU、存储容量
    一次批量杀死多个进程
    bash:pybot未找到命令
    Swoft-Api项目部署九:前、后置中间件
    Swoft-Api项目部署八:主从数据库配置
    Swoft-Api项目部署七:验证器
  • 原文地址:https://www.cnblogs.com/zyl910/p/2186627.html
Copyright © 2011-2022 走看看