Linux 图片全屏缩放 c,RGB源数据操作: 实现图片放大、缩小

这篇博客介绍了如何在Linux环境下,使用C语言通过近邻取样插值方法实现BMP图片的放大和缩小。文章提供了详细的功能介绍、核心代码、运行示例,包括图片的读取、RGB数据处理、新图片的生成等步骤。
摘要由CSDN通过智能技术生成

一、运行环境介绍

Linux系统: Redhat6.3 (32位)

gcc 版本 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC)

二、功能介绍

打开一张BMP图片,读取RGB源数据进行缩放再生成新的BMP图片。

三、核心代码

由于处理的是BMP图片数据,传入的缩放后的图片宽度需要是4的倍数.

#include

#include

#include

int PicZoom(unsigned char *s_buff,unsigned int s_width,unsigned int s_height,unsigned char *buff,unsigned int width,unsigned int height);

void *my_memcpy(void *v_dst,const void *v_src,unsigned char c);

#pragma pack(1) /* 必须在结构体定义之前使用,这是为了让结构体中各成员按1字节对齐 */

/*需要文件信息头:14个字节 */

struct BITMAPFILEHEADER

{

unsigned short bfType; //保存图片类似。 'BM'

unsigned long bfSize; //图片的大小

unsigned short bfReserved1;

unsigned short bfReserved2;

unsigned long bfOffBits; //RGB数据偏移地址

};

/* 位图信息头 */

struct BITMAPINFOHEADER { /* bmih */

unsigned long biSize; //结构体大小

unsigned long biWidth;//宽度

unsigned long biHeight;//高度

unsigned short biPlanes;

unsigned short biBitCount;//颜色位数

unsigned long biCompression;

unsigned long biSizeImage;

unsigned long biXPelsPerMeter;

unsigned long biYPelsPerMeter;

unsigned long biClrUsed;

unsigned long biClrImportant;

};

/*

图片放大与缩小示例

*/

int main(int argc,char *argv[])

{

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值