//水平翻转
/*字符串转换成整形*/
int str2int(const char* str)
{
int temp = 0;
const char* ptr = str; //ptr保存str字符串开头
if (*str == '-' || *str == '+') //如果第一个字符是正负号,
{ //则移到下一个字符
str++;
}
while (*str != 0)
{
if ((*str < '0') || (*str > '9')) //如果当前字符不是数字
{ //则退出循环
break;
}
temp = temp * 10 + (*str - '0'); //如果当前字符是数字则计算数值
str++; //移到下一个字符
}
if (*ptr == '-') //如果字符串是以“-”开头,则转换成其相反数
{
temp = -temp;
}
return temp;
}
wchar_t* c2w(const char* str)
{
int length = strlen(str) + 1;
wchar_t* t = (wchar_t*)malloc(sizeof(wchar_t) * length);
memset(t, 0, length * sizeof(wchar_t));
MultiByteToWideChar(CP_ACP, 0, str, strlen(str), t, length);
return t;
}
int rotimage(IMAGE* dstImg, IMAGE* srcImg, int angle)
{
dstImg->Resize(srcImg->getheight(), srcImg->getwidth());
rotateimage(dstImg, srcImg, -PI * angle / 180);
//delete dstImg, srcImg;
return 0;
}
//黑白图片
void toGray(IMAGE* dstImg, IMAGE* srcImg)
{
dstImg->Resize(srcImg->getwidth(), srcImg->getheight());
DWORD* psrc = GetImageBuffer(srcImg);
DWORD* pdsc = GetImageBuffer(dstImg);
for (int i = 0; i < srcImg->getwidth() * srcImg->getheight(); i++)
{
DWORD color = psrc[i];
UCHAR r = (UCHAR)color;
UCHAR g = (UCHAR)(color >> 8);
UCHAR b = (UCHAR)(color >> 16);
UCHAR a = (UCHAR)(color >> 24);
DWORD arv = (r + g + b) / 3;
pdsc[i] = RGB(arv, arv, arv);
}
}
//水平翻转
void shuipingfanzhuan(IMAGE* dstImg, IMAGE* srcImg)
{
dstImg->Resize(srcImg->getwidth(), srcImg->getheight());
DWORD* psrc = GetImageBuffer(srcImg);
DWORD* pdsc = GetImageBuffer(dstImg);
for (int i = 0; i < srcImg->getheight(); i++)
{
for (int j = 0; j < srcImg->getwidth(); j++)
{
pdsc[i * srcImg->getwidth() + srcImg->getwidth() - j - 1] = psrc[i * srcImg->getwidth() + j];
}
}
//putimage(400,0, dstImg);
}
//垂直翻转
void chuizhifanzhuan(IMAGE* dstImg, IMAGE* srcImg)
{
dstImg->Resize(srcImg->getwidth(), srcImg->getheight());
DWORD* psrc = GetImageBuffer(srcImg);
DWORD* pdsc = GetImageBuffer(dstImg);
for (int i = 0; i < srcImg->getheight(); i++)
{
for (int j = 0; j < srcImg->getwidth(); j++)
{
pdsc[(srcImg->getheight() - i) * srcImg->getwidth() - srcImg->getwidth() + j + 1] = psrc[i * srcImg->getwidth() + j];
}
}
//putimage(400, 0, dstImg);
}
//水平垂直对角翻转,fs=1,水平,2:垂直,3:对角(与旋转180相当)
void fanzhuanimg(IMAGE* dstImg, IMAGE* srcImg, int fzfs)
{
dstImg->Resize(srcImg->getwidth(), srcImg->getheight());
DWORD* psrc = GetImageBuffer(srcImg);
DWORD* pdsc = GetImageBuffer(dstImg);
for (int i = 0; i < srcImg->getheight(); i++)
{
for (int j = 0; j < srcImg->getwidth(); j++)
{
if (fzfs == 1) pdsc[i * srcImg->getwidth() + srcImg->getwidth() - j - 1] = psrc[i * srcImg->getwidth() + j];
else if (fzfs == 2)pdsc[(srcImg->getheight() - i) * srcImg->getwidth() - srcImg->getwidth() + j ] = psrc[i * srcImg->getwidth() + j];
else if (fzfs == 3)pdsc[(srcImg->getheight() - i) * srcImg->getwidth() - srcImg->getwidth() + j ] = psrc[i * srcImg->getwidth() + srcImg->getwidth() - 1 - j];
}
}
//putimage(400, 0, dstImg);
}
//旋转图片xzjg=90,180,270
void xuanzhuanimg(IMAGE* dstImg, IMAGE* srcImg, int xzjd)
{
if (xzjd == 90 || xzjd == 270 || xzjd == 91 || xzjd == 271)
dstImg->Resize(srcImg->getheight(), srcImg->getwidth());
else if (xzjd == 180 || xzjd == 0)dstImg->Resize(srcImg->getwidth(), srcImg->getheight());
DWORD* psrc = GetImageBuffer(srcImg);
DWORD* pdsc = GetImageBuffer(dstImg);
if (xzjd == 90 || xzjd == 91)
{
for (int i = srcImg->getheight() - 1; i > 0; i--)
{
int start = i * srcImg->getwidth();
for (int j = 0; j < srcImg->getwidth(); j++)
{
if (xzjd == 90)pdsc[j * srcImg->getheight() +