• 大小: 690KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-23
  • 语言: 其他
  • 标签: 缩放  

资源简介

图像缩放的代码,正文是双三次插值,用宏屏蔽掉的部分是双线性插值, 代码均来源于网络,我只是做了一些整理工作

资源截图

代码片段和文件信息

// ScaleTest.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include    
#include      
#include      
#include      
#include   

#include//时间相关头文件,可用其中函数计算图像处理速度  

#define   WIDTHBYTES(bits) (((bits)+31)/32*4)//用于使图像宽度所占字节数为4byte的倍数  

#define MYDRAW_WIDTH 1920  //目标图像宽度  
#define MYDRAW_HEIGHT 1080  //目标图像高度  
float a = -0.5; // BiCubic基函数

typedef unsigned char  BYTE;
typedef unsigned short WORD;
typedef unsigned long  DWORD;
typedef long LONG;

//位图文件头信息结构定义  
//其中不包含文件类型信息(由于结构体的内存结构决定,要是加了的话将不能正确读取文件信息)  

typedef struct tagBITMAPFILEHEADER {
DWORD  bfSize;          //文件大小  
WORD   bfReserved1;     //保留字,不考虑  
WORD   bfReserved2;     //保留字,同上  
DWORD  bfOffBits;       //实际位图数据的偏移字节数,即前三个部分长度之和  
} BITMAPFILEHEADER;

//信息头BITMAPINFOHEADER,也是一个结构,其定义如下:  

typedef struct tagBITMAPINFOHEADER {
//public:  
DWORD   biSize;             //指定此结构体的长度,为40  
LONG    biWidth;            //位图宽  
LONG    biHeight;           //位图高  
WORD    biPlanes;           //平面数,为1  
WORD    biBitCount;         //采用颜色位数,可以是1,2,4,8,16,24,新的可以是32  
DWORD   biCompression;      //压缩方式,可以是0,1,2,其中0表示不压缩  
DWORD   biSizeImage;        //实际位图数据占用的字节数  
LONG    biXPelsPerMeter;    //X方向分辨率  
LONG    biYPelsPerMeter;    //Y方向分辨率  
DWORD   biClrUsed;          //使用的颜色数,如果为0,则表示默认值(2^颜色位数)  
DWORD   biClrImportant;     //重要颜色数,如果为0,则表示所有颜色都是重要的  
} BITMAPINFOHEADER;

void main()
{
long now = 0;
now = clock();//存储图像处理开始时间  

BITMAPFILEHEADER bitHead writebitHead;
BITMAPINFOHEADER bitInfoHead writebitInfoHead;
FILE* pfile;//输入文件  
FILE* wfile;//输出文件  

char strFile[50] = “demo.bmp“;//打开图像路径,BMP图像必须为24位真彩色格式  
char strFilesave[50] = “16.bmp“;//处理后图像存储路径  
fopen_s(&pfile strFile “rb“);//文件打开图像  
fopen_s(&wfile strFilesave “wb“);//打开文件为存储修改后图像做准备  

//读取位图文件头信息  
WORD fileType;
fread(&fileType 1 sizeof(WORD) pfile);
fwrite(&fileType 1 sizeof(WORD) wfile);
if (fileType != 0x4d42)
{
printf(“file is not .bmp file!“);
return;
}

//读取位图文件头信息  
fread(&bitHead 1 sizeof(tagBITMAPFILEHEADER) pfile);
writebitHead = bitHead;//由于截取图像头和源文件头相似,所以先将源文件头数据赋予截取文件头  
//读取位图信息头信息  
fread(&bitInfoHead 1 sizeof(BITMAPINFOHEADER) pfile);
writebitInfoHead = bitInfoHead;//同位图文件头相似  

//为截取文件重写位图高度
writebitInfoHead.biHeight = MYDRAW_HEIGHT;  
//为截取文件重写位图宽度
writebitInfoHead.biWidth = MYDRAW_WIDTH;  
// 一行大小 (32位对齐)
int mywritewidth = WIDTHBYTES(writebitInfoHead.biWidth*writebitInfoHead.biBitCount);//BMP图像实际位图数据区的宽度为4byte的倍数,在此计算实际数据区宽度  
writebitInfoHead.biSizeImage = mywritewidth*writebitInfoHead.biHeight;//计算位图实际数据区大小  

writebitHead.bfSize = 54 + writebitInfoHead.biSizeImage;//位图文件头大小为位图数据区大小加上54byte  
fwrite(&writebitHead 1 sizeof(tagBITMAPFILEHEADER) wfile);//写回位图文件头信息到输出文件  
fwrite(&writebitInfoHead 1 sizeof(BITMAPINFOHEADER) wfile);//写回位图信息头信息到输出文件  

// 原图分辨率
int width = bitIn

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2397  2017-12-07 10:29  ScaleTest\Debug\ScaleTest.Build.CppClean.log

     文件        446  2017-12-07 10:29  ScaleTest\Debug\ScaleTest.log

     文件    1200054  2017-12-06 10:17  ScaleTest\demo.bmp

     文件    2359296  2017-12-07 10:19  ScaleTest\ipch\scaletest-2ce03064\scaletest-152ae574.ipch

     文件       1567  2017-12-06 10:06  ScaleTest\ReadMe.txt

     文件      10923  2017-12-07 10:28  ScaleTest\ScaleTest.cpp

     文件        884  2017-12-06 10:07  ScaleTest\ScaleTest.sln

    ..A..H.     10752  2017-12-07 10:29  ScaleTest\ScaleTest.suo

     文件       4370  2017-12-06 10:07  ScaleTest\ScaleTest.vcxproj

     文件       1313  2017-12-06 10:07  ScaleTest\ScaleTest.vcxproj.filters

     文件        143  2017-12-06 10:06  ScaleTest\ScaleTest.vcxproj.user

     文件        214  2017-12-06 10:06  ScaleTest\stdafx.cpp

     文件        233  2017-12-06 10:06  ScaleTest\stdafx.h

     文件        236  2017-12-06 10:06  ScaleTest\targetver.h

     目录          0  2017-12-07 10:30  ScaleTest\ipch\scaletest-2ce03064

     目录          0  2017-12-07 10:30  ScaleTest\Debug

     目录          0  2017-12-07 10:30  ScaleTest\ipch

     目录          0  2017-12-07 11:47  ScaleTest

----------- ---------  ---------- -----  ----

              3592828                    18


评论

共有 条评论