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

代码片段和文件信息
// 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
相关资源
- flash as3 多点触控-缩放-旋转-滑动.zi
- jcrop v0.9.12
- vc利用MFC底层开发的二维GIS管理软件,
- 图像缩放(MFC)有详细的实现过程
- 铜酸盐异常缩放的全息模型
- sizekit2 XE10.2 窗体和控件自动缩放
- 以鼠标位置为中心的滑轮放大功能d
- Delphi自动根据窗体大小缩放控件
- 易语言画板图像缩放源
- FFmpeg和SDL,读内存中的视频流,进行
- 基于FPGA实现固定倍率的图像缩放
- 摩登国际客户相册图片批量压缩工具
- VC 图像几何变换、图像平移、垂直水
- OpenGL实现三维物体旋转,缩放
- OpenGL立方体在世界坐标系中缩放_旋转
- 图片手动缩放移动、单击退出、双击
- Cocos2d-x 瓦片地图操作Demo-双指缩放、
- 仿微信通过拍照或者本地图片裁剪完
- 频域缩放算法测试
- 图片标注可缩放点击跳转
- OpenNI获取三维点云并用OpenGL显示可旋
- vc实现二维图形平移、旋转和缩放功能
- OpenGL实现鼠标旋转缩放平移操作
- 双线性插值FPGA.zip
- 自定义ImageView控件,具有缩放和拖拽
- Qt写的一个读取并展示网络地图的程序
- verilog HDL实现双线性插值视频缩放
- 图片查看器支持鼠标滚轮缩放及拖动
- 图形学基础的课程设计-实现图形的变
- 环物热点缩放多层插件
评论
共有 条评论