使用 iplRotate 我得到的图片丢失了左右部分。为什么?
Use iplRotate the picture what I get is losing the part of left and right .why?
代码是为两个 :imageSo 和 imageDe 创建 CreateImageHeader,
然后通过 scanline 对 imagedata 进行估值,
然后按判断角度旋转,
然后通过图像数据值扫描线,
我把主要的代码如我所说的放在后面,希望有人能给我建议或思考。
创建:
imageSo = CreateImageHeader(bmp->PixelFormat, bmp->Width,bmp->Height);
imageDe = CreateImageHeader(bmp->PixelFormat, bmp->Width,bmp->Height);
班次:
bit1=(BYTE*) bmp->ScanLine[hSrc-1];
bit2=imageSo->imageData;
for(int i=0;i < hSrc;i++)
{
memcpy(bit2,bit1,cpy);
bit1+=wBmp;
bit2+=wIpl;
}
旋转:
if(param.Angle){
double xshift=0;
double yshift=0;
iiplGetRotateShift(bmp->Width/2,bmp->Height/2,BmpProperty.Angle,&xshift,&yshift);
iiplRotate(imageSo,imageDe,BmpProperty.Angle,xshift,yshift,IPL_INTER_CUBIC|IPL_SMOOTH_EDGE);
}
shift2:
bit1=(BYTE*) bmp->ScanLine[hSrc-1];
bit2=imageSo->imageData;
for(int i=0;i < hSrc;i++)
{
memcpy(bit1,bit2,cpy);
bit1+=wBmp;
bit2+=wIpl;
}
我现在知道原因了,因为旋转后,canvas也在旋转,所以我把canvas设置为正方形,原来是长方形before.also理解图片canvas的立场也会有所帮助。
这里是介绍 canvas 旋转细节的网站。
enter link description here
代码是为两个 :imageSo 和 imageDe 创建 CreateImageHeader, 然后通过 scanline 对 imagedata 进行估值, 然后按判断角度旋转, 然后通过图像数据值扫描线,
我把主要的代码如我所说的放在后面,希望有人能给我建议或思考。
创建:
imageSo = CreateImageHeader(bmp->PixelFormat, bmp->Width,bmp->Height);
imageDe = CreateImageHeader(bmp->PixelFormat, bmp->Width,bmp->Height);
班次:
bit1=(BYTE*) bmp->ScanLine[hSrc-1];
bit2=imageSo->imageData;
for(int i=0;i < hSrc;i++)
{
memcpy(bit2,bit1,cpy);
bit1+=wBmp;
bit2+=wIpl;
}
旋转:
if(param.Angle){
double xshift=0;
double yshift=0;
iiplGetRotateShift(bmp->Width/2,bmp->Height/2,BmpProperty.Angle,&xshift,&yshift);
iiplRotate(imageSo,imageDe,BmpProperty.Angle,xshift,yshift,IPL_INTER_CUBIC|IPL_SMOOTH_EDGE);
}
shift2:
bit1=(BYTE*) bmp->ScanLine[hSrc-1];
bit2=imageSo->imageData;
for(int i=0;i < hSrc;i++)
{
memcpy(bit1,bit2,cpy);
bit1+=wBmp;
bit2+=wIpl;
}
我现在知道原因了,因为旋转后,canvas也在旋转,所以我把canvas设置为正方形,原来是长方形before.also理解图片canvas的立场也会有所帮助。
这里是介绍 canvas 旋转细节的网站。 enter link description here