资源简介
图像缩放的代码,正文是双三次插值,用宏屏蔽掉的部分是双线性插值,
代码均来源于网络,我只是做了一些整理工作
代码片段和文件信息
// 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
相关资源
- 具有缩放滚动拖动等功能的视图类
- PS批量缩放选中图层不改变位置.rar
- 双线性插值算法
- Qt4图片缩放应用程序
- pinchzoom手机图片缩放插件
- Qt 仿QQ图片查看器
- UE4触控屏手势输入SDK,单指点击,双
- qt实现图片缩放
- [免费]svg滚轮缩放拖拽
- 图片随手势缩放平移,多点触控
- d3 带缩放的折线
- Qt小实练--实现圆角、阴影、无边框窗
- 几何变换(图像平移,垂直镜像,水
- AS3.0 图片点击缩放、旋转移动
- 高斯和拉盖尔甚至合奏的最佳软边缩
- 准一维长缩放喷管设计计算的试验验
- $$ {\\ mathrm {SU}}N$$ lt;mathgt; mrow mi SU l
- js图片查看器。鼠标拖动图片任意方向
- iOS 图片裁剪 自定义大小 图片可缩放
- Qt QGraphicsItem尺寸调整,缩放
- 微信小程序图片缩放移动代码
- qt_draw画图工具
- QT5.X多点触控使用双手指缩放图片源码
- qt开发,实现图片导入、显示、缩放、
- Opencv叠加透明图片包括旋转和缩放
- Unity移动的手势插件(移动、旋转、缩
- 图片点击放大到全屏、可以手势缩放
- ( Delphi 7 )使用GDI+进行图形缩放、拖
- 双线性插值FPGA代码Verilog
- canvas绘图 移动端手机壳定制图片缩放
评论
共有 条评论