当前位置: 首页 > news >正文

关于百度网站的优缺点上海网络维护找哪家好

关于百度网站的优缺点,上海网络维护找哪家好,湖南品牌网站建设,淄博免费网站建设本实理论上支持24位图和32位图#xff0c;实际上只测试了24位。原理很简单#xff0c;就是RGB中的蓝色字节和红色字节交换。 测试代码1#xff1a; #include stdio.h #include unistd.h #include sys/stat.h #include stdlib.h #include 实际上只测试了24位。原理很简单就是RGB中的蓝色字节和红色字节交换。 测试代码1 #include stdio.h #include unistd.h #include sys/stat.h #include stdlib.h #include sys/types.h #include fcntl.h #include errno.h #include sys/ioctl.h #include linux/videodev2.h #include sys/mman.h #include string.h #include stdint.h #include jpeglib.h#define _DEBUG_INFO #ifdef _DEBUG_INFO #define DEBUG_INFO(format, ...) printf(%s:%d -- format\n \ ,__func__,__LINE__ \ , ##__VA_ARGS__) #else #define DEBUG_INFO(format, ...) #endif//Gray 0.30 * R 0.59 * G 0.11 * B uint8_t rgb888_to_gray(uint8_t r,uint8_t g,uint8_t b){return (uint8_t)(0.3 *(float)r 0.59 * (float)g 0.11 * (float)b); }typedef uint16_t WORD; typedef uint32_t DWORD; #pragma pack(1) typedef struct tagBITMAPFILEHEADER{WORD bfType;//2DWORD bfSize;//4WORD bfReserved1;//2WORD bfReserved2;//2DWORD bfOffBits;//4 } BITMAPFILEHEADER; #pragma pack() typedef int32_t LONG; #pragma pack(1) typedef struct tagBITMAPINFOHEADER{DWORD biSize;LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCount;DWORD biCompression;DWORD biSizeImage;LONG biXPelsPerMeter;LONG biYPelsPerMeter;DWORD biClrUsed;DWORD biClrImportant; } BITMAPINFOHEADER; int main(int argc, char **argv) {char *filename RGB.bmp;int fd open(filename , O_RDONLY);if(fd 0){perror(open:);return -1;}struct tagBITMAPFILEHEADER * bit_map_file_header malloc(sizeof(struct tagBITMAPFILEHEADER));struct tagBITMAPINFOHEADER * bit_map_info_header malloc(sizeof(struct tagBITMAPINFOHEADER));DEBUG_INFO(%d %d,sizeof(struct tagBITMAPFILEHEADER),sizeof(struct tagBITMAPINFOHEADER));if(bit_map_file_header NULL || bit_map_info_header NULL){perror(malloc:);return -1;}//读取bmp的头信息read(fd , bit_map_file_header , 14);if(bit_map_file_header-bfType ! 0x4D42){DEBUG_INFO(这不是BMP图片);return -1;}DEBUG_INFO(bfOffBits %d,bit_map_file_header-bfOffBits);read(fd , bit_map_info_header , 40);DEBUG_INFO(width %d,height %d,biBitCount %d\n , bit_map_info_header-biWidth , bit_map_info_header-biHeight,bit_map_info_header-biBitCount);if(bit_map_info_header-biBitCount 24){DEBUG_INFO(仅支持24位和32位的BMP图片);return -1;}if(bit_map_info_header-biWidth 0){bit_map_info_header-biWidth abs(bit_map_info_header-biWidth);}if(bit_map_info_header-biHeight 0){bit_map_info_header-biHeight abs(bit_map_info_header-biHeight);}DEBUG_INFO(width %d,%d,biBitCount %d\n , bit_map_info_header-biWidth , bit_map_info_header-biHeight,bit_map_info_header-biBitCount);// return 0;int bmp_data_len bit_map_info_header-biWidth * bit_map_info_header-biHeight * bit_map_info_header-biBitCount;DEBUG_INFO(bmp_data_len %d,bmp_data_len);unsigned char *bmp_buf malloc(bmp_data_len);if(bmp_buf NULL){DEBUG_INFO(malloc error);return -1;}int ret read(fd,bmp_buf,bmp_data_len);if(ret 0){DEBUG_INFO(read error);return -1;}//把RGB转换成BGR就是调用R和G的位置int index 0;unsigned char tmp;while(bmp_data_len index){tmp bmp_buf[index 0];bmp_buf[index 0] bmp_buf[index 2];bmp_buf[index 2] tmp;index (bit_map_info_header-biBitCount 3);}int bgr_bmp_fd open(BGR.bmp,O_WRONLY | O_TRUNC | O_CREAT,0660);if(fd 0){perror(open:);return -1;}write(bgr_bmp_fd,bit_map_file_header,sizeof(struct tagBITMAPFILEHEADER));write(bgr_bmp_fd,bit_map_info_header,sizeof(struct tagBITMAPINFOHEADER));write(bgr_bmp_fd,bmp_buf,bmp_data_len);close(bgr_bmp_fd);close(fd);free(bmp_buf);return 0; } 调试信息 测试结果 左边是转换之前右边是转换之后。 由调试信息可知选取的图片是720X336也就是行4字节对齐的。换成721X336的图片,测试结果如下果然出错了。  测试代码2 修改后的颜色转换部分如下所示这里主要解决了行4字节对齐的问题。 #include stdio.h #include unistd.h #include sys/stat.h #include stdlib.h #include sys/types.h #include fcntl.h #include errno.h #include sys/ioctl.h #include linux/videodev2.h #include sys/mman.h #include string.h #include stdint.h #include jpeglib.h#define _DEBUG_INFO #ifdef _DEBUG_INFO #define DEBUG_INFO(format, ...) printf(%s:%d -- format\n \ ,__func__,__LINE__ \ , ##__VA_ARGS__) #else #define DEBUG_INFO(format, ...) #endif//Gray 0.30 * R 0.59 * G 0.11 * B uint8_t rgb888_to_gray(uint8_t r,uint8_t g,uint8_t b){return (uint8_t)(0.3 *(float)r 0.59 * (float)g 0.11 * (float)b); }typedef uint16_t WORD; typedef uint32_t DWORD; #pragma pack(1) typedef struct tagBITMAPFILEHEADER{WORD bfType;//2DWORD bfSize;//4WORD bfReserved1;//2WORD bfReserved2;//2DWORD bfOffBits;//4 } BITMAPFILEHEADER; #pragma pack() typedef int32_t LONG; #pragma pack(1) typedef struct tagBITMAPINFOHEADER{DWORD biSize;LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCount;DWORD biCompression;DWORD biSizeImage;LONG biXPelsPerMeter;LONG biYPelsPerMeter;DWORD biClrUsed;DWORD biClrImportant; } BITMAPINFOHEADER; char *src_file_name RGB2.bmp; char *dst_file_name BGR2.bmp;int main(int argc, char **argv) {int fd open(src_file_name , O_RDONLY);if(fd 0){perror(open:);return -1;}struct tagBITMAPFILEHEADER * bit_map_file_header malloc(sizeof(struct tagBITMAPFILEHEADER));struct tagBITMAPINFOHEADER * bit_map_info_header malloc(sizeof(struct tagBITMAPINFOHEADER));DEBUG_INFO(%d %d,sizeof(struct tagBITMAPFILEHEADER),sizeof(struct tagBITMAPINFOHEADER));if(bit_map_file_header NULL || bit_map_info_header NULL){perror(malloc:);return -1;}//读取bmp的头信息read(fd , bit_map_file_header , 14);if(bit_map_file_header-bfType ! 0x4D42){DEBUG_INFO(这不是BMP图片);return -1;}DEBUG_INFO(biSizebfOffBits %d,bfSize %d,bit_map_file_header-bfOffBits,bit_map_file_header-bfSize);read(fd , bit_map_info_header , 40);DEBUG_INFO(biSize %d,width %d,height %d,biBitCount %d,biPlanes %d,\n\biCompression %d,biSizeImage %d,\n\biXPelsPerMeter %d,biYPelsPerMeter %d,\n\biClrUsed %d,biClrImportant %d\n , bit_map_info_header-biSize,bit_map_info_header-biWidth , bit_map_info_header-biHeight,bit_map_info_header-biBitCount,bit_map_info_header-biPlanes,bit_map_info_header-biCompression,bit_map_info_header-biSizeImage,bit_map_info_header-biXPelsPerMeter,bit_map_info_header-biYPelsPerMeter,bit_map_info_header-biClrUsed,bit_map_info_header-biClrImportant);if(bit_map_info_header-biBitCount 24){DEBUG_INFO(仅支持24位和32位的BMP图片);return -1;}if(bit_map_info_header-biWidth 0){bit_map_info_header-biWidth abs(bit_map_info_header-biWidth);}if(bit_map_info_header-biHeight 0){bit_map_info_header-biHeight abs(bit_map_info_header-biHeight);}DEBUG_INFO(width %d,%d,biBitCount %d\n , bit_map_info_header-biWidth , bit_map_info_header-biHeight,bit_map_info_header-biBitCount);// return 0;unsigned char *bmp_buf malloc(bit_map_file_header-bfSize);unsigned char *dst_bmp_buf malloc(bit_map_file_header-bfSize);if(bmp_buf NULL){DEBUG_INFO(malloc error);return -1;}int ret read(fd,bmp_buf,bit_map_file_header-bfSize - 54);if(ret 0){DEBUG_INFO(read error);return -1;}int w bit_map_info_header-biWidth;int h bit_map_info_header-biHeight;int biBitCount bit_map_info_header-biBitCount;int color_byte biBitCount/8;int offset_step;if((w * color_byte)%4){offset_step ((w*color_byte)/41)*4;}else{offset_step w*color_byte;}DEBUG_INFO(offset_step %d,offset_step);//把RGB转换成BGR就是调用R和G的位置int index 0;unsigned char tmp;int offset 0;DEBUG_INFO(color_byte %d,color_byte);int line0;for(int i 0 ; i h; i){for(int j 0 ; j w ; j){int index offset j * color_byte;tmp bmp_buf[index 0 ];bmp_buf[index 0 ] bmp_buf[index 2 ];bmp_buf[index 2 ] tmp; }offset offset_step;}int bgr_bmp_fd open(dst_file_name,O_WRONLY | O_TRUNC | O_CREAT,0660);if(fd 0){perror(open:);return -1;}write(bgr_bmp_fd,bit_map_file_header,sizeof(struct tagBITMAPFILEHEADER));write(bgr_bmp_fd,bit_map_info_header,sizeof(struct tagBITMAPINFOHEADER));write(bgr_bmp_fd,bmp_buf,bit_map_file_header-bfSize - 54);close(bgr_bmp_fd);close(fd);free(bmp_buf);return 0; } 测试721x336,OK 在测一个571X673的效果还是不错的。 调试信息宽571高673行宽2284字节。 小结
http://www.w-s-a.com/news/210419/

相关文章:

  • Apache局域网网站制作wordpress外链自动保存
  • 网站备案号要怎么查询千锋教育培训机构地址
  • 门户网站建设要求几款免费流程图制作软件
  • 花生壳域名可以做网站域名吗wordpress内链工具
  • 猎头公司网站模板网站伪静态作用
  • 工程建设教育网站html成品网页模板下载
  • 同一ip 网站 权重wordpress 菜单 小图标
  • 网站没有icp备案wordpress d8主题 4.1
  • 手机网站建设推荐企业宣传页模板
  • 杭州市富阳区建设局网站动态域名做网站
  • 网站如何免费做SEO优化靖安县城乡规划建设局网站
  • 室内设计网站平台学新媒体运营最好的培训学校
  • 招聘网站建设工作总结湘潭seo
  • 台山网站设计哈尔滨网站建设外包公司
  • 常州城投建设招标网站网页设计入门教学视频
  • 石家庄教育平台网站建设wordpress 访问量统计
  • 为什么买的网站模版不好用ftp网站建设
  • 做网站办公照片crm系统视频
  • 网站建设 招标文件南昌做网络推广的
  • 增城电子商务网站建设浙江省住房和城乡建设部网站
  • 企业网站宽度给多少手机软件开发公司排名
  • 装修设计网站哪个平台最好免费自助建站工具
  • 网站建设规划结构网站服务费怎么做分录
  • 哪里有做网站的公司微商怎么开店步骤
  • 访问不了服务器的网站北京工业产品设计公司
  • 怎么棋牌网站建设口碑好的福州网站建设
  • 怎么样注册一个网站南通网站定制搭建
  • 网站免费正能量软件下载wordpress 多本小说
  • 临淄网站制作价格低长沙谷歌seo收费
  • 吴江公司网站建设电话免费的那种软件