GDAL图片裁剪程序
基于GDAL使用C++编写的图像裁剪程序,并内置了GDAL开发库。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-03-22 22:54 CutImage
目录 0 2016-03-22 22:53 CutImagein
文件 379865 2016-01-06 10:38 CutImagein1.jpg
文件 197120 2016-03-22 22:53 CutImageinCutImage.exe
文件 72086 2016-03-22 22:53 CutImageinCutImage.exp
文件 1013880 2016-03-22 22:53 CutImageinCutImage.ilk
文件 119618 2016-03-22 22:53 CutImageinCutImage.lib
文件 1043456 2016-03-22 22:53 CutImageinCutImage.pdb
文件 9125376 2015-06-18 07:42 CutImageingdal110.dll
目录 0 2016-03-22 22:22 CutImageCutImage
文件 1245 2016-03-22 22:22 CutImageCutImage.sln
文件 9728 2016-03-22 22:54 CutImageCutImage.suo
文件 5698 2016-03-22 22:23 CutImageCutImageCutImage.vcxproj
文件 942 2016-03-22 22:17 CutImageCutImageCutImage.vcxproj.filters
文件 143 2016-03-22 22:01 CutImageCutImageCutImage.vcxproj.user
目录 0 2016-03-22 22:22 CutImageCutImageDebug
文件 544 2016-03-22 22:22 CutImageCutImageDebugcl.command.1.tlog
文件 14320 2016-03-22 22:22 CutImageCutImageDebugCL.read.1.tlog
文件 312 2016-03-22 22:22 CutImageCutImageDebugCL.write.1.tlog
文件 381 2016-03-22 22:22 CutImageCutImageDebugCutImage.exe.intermediate.manifest
文件 55 2016-03-22 22:22 CutImageCutImageDebugCutImage.lastbuildstate
文件 26220 2016-03-22 22:22 CutImageCutImageDebugCutImage.log
文件 0 2016-03-22 22:22 CutImageCutImageDebugCutImage.unsuccessfulbuild
文件 713 2016-03-22 22:17 CutImageCutImageDebugCutImage.vcxprojResolveAssemblyReference.cache
文件 0 2016-03-22 22:17 CutImageCutImageDebugCutImage.write.1.tlog
文件 2 2016-03-22 22:22 CutImageCutImageDebuglink.command.1.tlog
文件 2 2016-03-22 22:22 CutImageCutImageDebuglink.read.1.tlog
文件 2 2016-03-22 22:22 CutImageCutImageDebuglink.write.1.tlog
文件 603895 2016-03-22 22:22 CutImageCutImageDebugmain.obj
文件 314368 2016-03-22 22:22 CutImageCutImageDebugvc100.idb
文件 307200 2016-03-22 22:22 CutImageCutImageDebugvc100.pdb
............此处省略2340个文件信息
/********************************************************************
Author: zhoushun
Email: shunzhou@foxmail.coms
Date: 2016/03/22
bri:
*/
#include “assert.h“
#include “../gdal/include/gdal.h“
#include “../gdal/include/gdal_priv.h“
#pragma comment(lib “../gdal/gdal_i.lib“)
/******************************************************************************
函数名:
readImageGDAL
功能:
读取图像一块区域
参数:
unsigned char **pImageData - 指向图像数据指针的指针,将由new操作符动态创建,需要在函数外部由调用者使用delete[]销毁,否则内存泄露
int x int y - 读取区域的位置
int widthint height - 图像宽度、高度,由于是引用,可以作为返回值。
nChannels - 图像通道,可选值为1或3。1代表灰度图像,3代表RGB图像-1表示按照图像自身通道数目读取。
const char *filePath - 图像文件路径名称
说明:******************************************************************************/
bool readImageGDAL(unsigned char **pImageData int x int y int width int height
int &nChannels const char *filePath)
{
GDALAllRegister();
GDALDataset *poDataset = NULL;
poDataset=(GDALDataset*) GDALOpen(filePathGA_ReadOnly);
if(poDataset == NULL)
{
GDALClose(poDataset);
return false;
}
int w = poDataset->GetRasterXSize();
int h = poDataset->GetRasterYSize();
GDALRasterBand* pBand;
int i = 0;
int nRastercount = poDataset->GetRasterCount();
if (nRastercount == 1) //只有1个通道,则为灰度图像
{
nChannels = 1;
pBand = poDataset->GetRasterBand(1);
*pImageData = new unsigned char[width * height];
pBand->RasterIO(GF_Read
xy //nXOffnYOff:从左上角坐标point(nXOffnYOff)处读取图像数据
widthheight //nXSizenXSize:要读取的图像数据尺寸,注意可以不是band的实际尺寸,这样就是读取roi区域数据
*pImageData //pData:读取的数据即将存储的目的地址。
widthheight //nBufXSizenBufYSize:目的地址处图像的尺寸,如果与roi尺寸不一致,则缩放。
GDT_Byte //eBufType:读取图像后,将要存储为的类型
0 //nPixelSpace:控制同一行相邻像素间隔,0代表使用目的数据类型大小
0); //nLineSpace:控制相邻行的行间隔,0代表使用[目的数据类型大小 * nXsize]
GDALClose(poDataset);
return true;
}
else if ( nRastercount == 3 && (nChannels == 3 || nChannels < 0) ) //有3个通道,并且输出为RGB图像
{
nChannels = 3;
*pImageData = new unsigned char[nRastercount * width * height];
for (i = 1; i <= nRastercount; ++ i)
{
//GDAL内band存储顺序为RGB,需要转换为我们一般的BGR存储,即低地址->高地址为:B G R
unsigned char *pImageOffset = *pImageData + i - 1;
GDALRasterBand* pBand = poDataset->GetRasterBand(nRastercount-i+1);
pBand->RasterIO(
GF_Read
xy
widthheight
pImageOffset
widthheight
GDT_Byte
3
0);
}
GDALClose(poDataset);
return true;
}
else if ( nRastercount == 3 && nChannels == 1 ) //有3个通道,但是要求输出灰度图像
{
unsigned char **img = new unsigned char*[nRastercount];
for (i = 0; i < nRastercount; i++)
{
img[i] = new unsigned char[width * height];
}
for (i = 1; i <= nRastercount; ++ i)
{
//GDAL内band存储顺序为RGB,需要转换为我们一般的BGR存储,即低地址->高地址为:B G R
pBand = poDataset->GetRasterBand(nRastercount-i+1);
pBand->RasterIO(GF_Read
xy
widthheight
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-03-22 22:54 CutImage
目录 0 2016-03-22 22:53 CutImagein
文件 379865 2016-01-06 10:38 CutImagein1.jpg
文件 197120 2016-03-22 22:53 CutImageinCutImage.exe
文件 72086 2016-03-22 22:53 CutImageinCutImage.exp
文件 1013880 2016-03-22 22:53 CutImageinCutImage.ilk
文件 119618 2016-03-22 22:53 CutImageinCutImage.lib
文件 1043456 2016-03-22 22:53 CutImageinCutImage.pdb
文件 9125376 2015-06-18 07:42 CutImageingdal110.dll
目录 0 2016-03-22 22:22 CutImageCutImage
文件 1245 2016-03-22 22:22 CutImageCutImage.sln
文件 9728 2016-03-22 22:54 CutImageCutImage.suo
文件 5698 2016-03-22 22:23 CutImageCutImageCutImage.vcxproj
文件 942 2016-03-22 22:17 CutImageCutImageCutImage.vcxproj.filters
文件 143 2016-03-22 22:01 CutImageCutImageCutImage.vcxproj.user
目录 0 2016-03-22 22:22 CutImageCutImageDebug
文件 544 2016-03-22 22:22 CutImageCutImageDebugcl.command.1.tlog
文件 14320 2016-03-22 22:22 CutImageCutImageDebugCL.read.1.tlog
文件 312 2016-03-22 22:22 CutImageCutImageDebugCL.write.1.tlog
文件 381 2016-03-22 22:22 CutImageCutImageDebugCutImage.exe.intermediate.manifest
文件 55 2016-03-22 22:22 CutImageCutImageDebugCutImage.lastbuildstate
文件 26220 2016-03-22 22:22 CutImageCutImageDebugCutImage.log
文件 0 2016-03-22 22:22 CutImageCutImageDebugCutImage.unsuccessfulbuild
文件 713 2016-03-22 22:17 CutImageCutImageDebugCutImage.vcxprojResolveAssemblyReference.cache
文件 0 2016-03-22 22:17 CutImageCutImageDebugCutImage.write.1.tlog
文件 2 2016-03-22 22:22 CutImageCutImageDebugli
文件 2 2016-03-22 22:22 CutImageCutImageDebugli
文件 2 2016-03-22 22:22 CutImageCutImageDebugli
文件 603895 2016-03-22 22:22 CutImageCutImageDebugmain.obj
文件 314368 2016-03-22 22:22 CutImageCutImageDebugvc100.idb
文件 307200 2016-03-22 22:22 CutImageCutImageDebugvc100.pdb
............此处省略2340个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)