📄 myfile.cpp
字号:
data[offset1+j]=abs(dataL[offset1+j]-dataR[offset2+j+xx_offset]);
}
}
}
}
#ifdef _MAC
// First swap the size field
*((LPDWORD)pDIB) = SWAPLONG(*((LPDWORD)pDIB));
// Now swap the rest of the structure
ByteSwapInfo(pDIB, IS_WIN30_DIB(pDIB));
#endif
::GlobalUnlock((HGLOBAL) hDIB1);
::GlobalUnlock((HGLOBAL) hDIB2);
::GlobalUnlock((HGLOBAL) hDIB);
return hDIB;
}
*/
int WINAPI MyDIBCheck(HDIB hDIB)
{
LPBITMAPINFOHEADER bminfoHeader;
LPSTR pDIB;
/*
* Check BitCount for DIB
*/
pDIB=(LPSTR) ::GlobalLock((HGLOBAL) hDIB);
bminfoHeader= (LPBITMAPINFOHEADER)pDIB;
::GlobalUnlock((HGLOBAL) hDIB);
return bminfoHeader->biBitCount;
}
/*
void WINAPI DIBTurn(HDIB hDIB,TurnFlag flag)
{
LPBITMAPINFOHEADER bminfoHeader;
LPSTR pDIB,tempDIB,data,tdata;
HDIB temphDIB;
int palettesize ,width,height;
LPixel24bits datargb,tdatargb;
pDIB=(LPSTR) ::GlobalLock((HGLOBAL) hDIB);
bminfoHeader= (LPBITMAPINFOHEADER)pDIB;
width = bminfoHeader->biWidth;
height =bminfoHeader->biHeight;
DWORD dwBitsSize;
if(bminfoHeader->biBitCount!=24)
dwBitsSize=width*height;
else
dwBitsSize=width*height*3;
if(bminfoHeader->biSizeImage!=dwBitsSize){
MessageBox(0,"sorry cant read compress image",0,MB_ICONWARNING);
return;
}
temphDIB = (HDIB) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT,dwBitsSize);
if (hDIB == 0 )
{
return ;
}
tempDIB = (LPSTR) ::GlobalLock((HGLOBAL) temphDIB);
switch(bminfoHeader->biBitCount)
{
case 1: palettesize = 2; break;
case 4: palettesize =16; break;
case 8: palettesize =256; break;
case 24: palettesize = 0; break;
default: return;
}
BYTE GrayMax=palettesize-1;
/*
* Go read the bits.
*/
/* data=pDIB+sizeof(BITMAPINFOHEADER)+palettesize* sizeof(RGBQUAD);
int i,j,offset1,offset2;
for(i=0;i<(int)dwBitsSize;i++)
tempDIB[i]=data[i];
if(palettesize==0){
tdatargb=(LPixel24bits)tempDIB;
datargb =(LPixel24bits)data;
}
else
tdata =tempDIB;
if(palettesize==0)
{
if(flag==Left)
{
for(i=0;i<width;i++)
{
offset1=i*height;
for(j=0;j<height;j++)
{
offset2=(height-1-j)*width;
datargb[offset1+j].r=tdatargb[offset2+i].r;
datargb[offset1+j].g=tdatargb[offset2+i].g;
datargb[offset1+j].b=tdatargb[offset2+i].b;
}//j circle
}//i circle
}
if(flag==Right)
{
for(i=0;i<width;i++)
{
offset1=(width-1-i)*height;
for(j=0;j<height;j++)
{
offset2=j*width;
datargb[offset1+j].r=tdatargb[offset2+i].r;
datargb[offset1+j].g=tdatargb[offset2+i].g;
datargb[offset1+j].b=tdatargb[offset2+i].b;
}//j circle
}//i circle
}
if(flag==UpDown)
{
for(i=0;i<height;i++)
{
offset1=(height-1-i)*width;
offset2=i*width;
for(j=0;j<width;j++)
{
datargb[offset1+j].r=tdatargb[offset2+j].r;
datargb[offset1+j].g=tdatargb[offset2+j].g;
datargb[offset1+j].b=tdatargb[offset2+j].b;
}//j circle
}//i circle
}
if(flag==DownUp)
{
for(i=0;i<height;i++)
{
offset2=(height-1-i)*width;
offset1=i*width;
for(j=0;j<width;j++)
{
datargb[offset1+j].r=tdatargb[offset2+j].r;
datargb[offset1+j].g=tdatargb[offset2+j].g;
datargb[offset1+j].b=tdatargb[offset2+j].b;
}//j circle
}//i circle
}
if(flag==LeftRight)
{
for(i=0;i<height;i++)
{
offset1=(height-1-i)*width;
for(j=0;j<width;j++)
{
datargb[offset1+j].r=tdatargb[offset1+width-j].r;
datargb[offset1+j].g=tdatargb[offset1+width-j].g;
datargb[offset1+j].b=tdatargb[offset1+width-j].b;
}//j circle
}//i circle
}
if(flag==RightLeft)
{
for(i=0;i<height;i++)
{
offset1=(height-1-i)*width;
for(j=0;j<width;j++)
{
datargb[offset1+width-j].r=tdatargb[offset1+j].r;
datargb[offset1+width-j].g=tdatargb[offset1+j].g;
datargb[offset1+width-j].b=tdatargb[offset1+j].b;
}//j circle
}//i circle
}
if(flag==GrayInverse)
{
for(i=0;i<height;i++)
{
offset1=(height-1-i)*width;
for(j=0;j<width;j++)
{
datargb[offset1+j].r=GrayMax-tdatargb[offset1+j].r;
datargb[offset1+j].g=GrayMax-tdatargb[offset1+j].g;
datargb[offset1+j].b=GrayMax-tdatargb[offset1+j].b;
}//j circle
}//i circle
}
}
else //else if palettesize
{
if(flag==Left)
{
for(i=0;i<width;i++)
{
offset1=i*height;
for(j=0;j<height;j++)
{
offset2=(height-1-j)*width;
data[offset1+j]=tdata[offset2+i];
}//j circle
}//i circle
}
if(flag==Right)
{
for(i=0;i<width;i++)
{
offset1=(width-1-i)*height;
for(j=0;j<height;j++)
{
offset2=j*width;
data[offset1+j]=tdata[offset2+i];
}//j circle
}//i circle
}
if(flag==UpDown)
{
for(i=0;i<height;i++)
{
offset1=(height-1-i)*width;
offset2=i*width;
for(j=0;j<width;j++)
{
data[offset1+j]=tdata[offset2+j];
}//j circle
}//i circle
}
if(flag==DownUp)
{
for(i=0;i<height;i++)
{
offset2=(height-1-i)*width;
offset1=i*width;
for(j=0;j<width;j++)
{
data[offset1+j]=tdata[offset2+j];
}//j circle
}//i circle
}
if(flag==LeftRight)
{
for(i=0;i<height;i++)
{
offset1=(height-1-i)*width;
for(j=0;j<width;j++)
{
data[offset1+j]=tdata[offset1+width-j];
}//j circle
}//i circle
}
if(flag==RightLeft)
{
for(i=0;i<height;i++)
{
offset1=(height-1-i)*width;
for(j=0;j<width;j++)
{
data[offset1+width-j]=tdata[offset1+j];
}//j circle
}//i circle
}
if(flag==GrayInverse)
{
for(i=0;i<height;i++)
{
offset1=(height-1-i)*width;
for(j=0;j<width;j++)
{
data[offset1+j]=GrayMax-tdata[offset1+j];
}//j circle
}//i circle
}
}//end if palettesize
::GlobalUnlock((HGLOBAL) temphDIB);
::GlobalFree((HGLOBAL) temphDIB);
if(flag==Left||flag==Right)
{
bminfoHeader->biWidth=height;
bminfoHeader->biHeight=width;
}
#ifdef _MAC
// First swap the size field
*((LPDWORD)pDIB) = SWAPLONG(*((LPDWORD)pDIB));
// Now swap the rest of the structure
ByteSwapInfo(pDIB, IS_WIN30_DIB(pDIB));
#endif
::GlobalUnlock((HGLOBAL) hDIB);
return ;
}
*/
HDIB WINAPI MyDIBCopy(HDIB hDIBO)
{
LPBITMAPINFOHEADER bminfoHeader;
DWORD dwBitsSize;
HDIB hDIB;
LPSTR pDIB,pDIBO;
int palettesize ;
/*
* Allocate memory for DIB
*/
pDIBO=(LPSTR) ::GlobalLock((HGLOBAL) hDIBO);
bminfoHeader= (LPBITMAPINFOHEADER)pDIBO;
switch(bminfoHeader->biBitCount)
{
case 1: palettesize = 2; break;
case 4: palettesize =16; break;
case 8: palettesize =256; break;
case 24: palettesize = 0; break;
default: return NULL;
}
dwBitsSize=sizeof(BITMAPINFOHEADER)
+palettesize*sizeof(RGBQUAD)
+bminfoHeader->biSizeImage;
hDIB = (HDIB) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT,dwBitsSize);
if (hDIB == 0 )
{
return NULL;
}
pDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);
int i;
for(i=0;i<(int)dwBitsSize;i++)
pDIB[i]=pDIBO[i];
#ifdef _MAC
// First swap the size field
*((LPDWORD)pDIB) = SWAPLONG(*((LPDWORD)pDIB));
// Now swap the rest of the structure
ByteSwapInfo(pDIB, IS_WIN30_DIB(pDIB));
#endif
::GlobalUnlock((HGLOBAL) hDIBO);
::GlobalUnlock((HGLOBAL) hDIB);
return hDIB;
}
/*
HDIB WINAPI MyDIBZoomCopy(HDIB hDIBO,int x0,int y0,int width,int height,int zoom)
{
LPBITMAPINFOHEADER bminfoHeader;
DWORD dwBitsSize;
HDIB hDIB;
LPSTR pDIB,pDIBO,data,dataO;
LPixel24bits datargb,datargbO;
int palettesize,BytesPerPixel ;
int widthO,heightO;
/*
* Allocate memory for DIB
*/
/* pDIBO=(LPSTR) ::GlobalLock((HGLOBAL) hDIBO);
bminfoHeader= (LPBITMAPINFOHEADER)pDIBO;
switch(bminfoHeader->biBitCount)
{
case 1: palettesize = 2;BytesPerPixel=1; break;
case 4: palettesize =16;BytesPerPixel=1; break;
case 8: palettesize =256;BytesPerPixel=1; break;
case 24: palettesize = 0;BytesPerPixel=3; break;
default: return NULL;
}
widthO =bminfoHeader->biWidth;
heightO=bminfoHeader->biHeight;
dwBitsSize=sizeof(BITMAPINFOHEADER)
+palettesize*sizeof(RGBQUAD)
+width*height*BytesPerPixel;
hDIB = (HDIB) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT,dwBitsSize);
if (hDIB == 0 )
{
return NULL;
}
pDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);
int i,j,k,l;
for(i=0;i<(int)(sizeof(BITMAPINFOHEADER)+palettesize*sizeof(RGBQUAD));i++)
pDIB[i]=pDIBO[i];
LPBITMAPINFOHEADER p_bminfo = (LPBITMAPINFOHEADER)pDIB;
p_bminfo->biWidth = width;
p_bminfo->biHeight = height;
p_bminfo->biSizeImage = (long)(height)*(long)(width)*BytesPerPixel;
data =pDIB +sizeof(BITMAPINFOHEADER)+palettesize* sizeof(RGBQUAD);
dataO=pDIBO+sizeof(BITMAPINFOHEADER)+palettesize* sizeof(RGBQUAD);
if(palettesize==0){
datargb =(LPixel24bits)data;
datargbO=(LPixel24bits)dataO;
}
int offset1,offset2;
int ii,jj,ti,tj;
for(i=(-height/2*zoom);i<=(height/2*zoom);i=i+zoom)
{
ii=y0+i/zoom;
offset2=(heightO-1-ii)*widthO;
if((ii>0)&&(ii<heightO))
{
for(j=(-width/2*zoom);j<(width/2*zoom);j=j+zoom)
{
jj=x0+j/zoom;
if((jj>0)&&(jj<widthO))
{
for(k=(-zoom/2);k<=(zoom/2);k++)
{
for(l=(-zoom/2);l<=(zoom/2);l++)
{
ti=i+k+height/2;
tj=j+l+width/2;
if((ti>0)&&(ti<height)&&(tj>0)&&(tj<width))
{
offset1=(height-1-ti)*width;
if(palettesize!=0)
{
data[offset1+tj]=dataO[offset2+jj];
}
if(palettesize==0)
{
datargb[offset1+tj].r=datargbO[offset2+jj].r;
datargb[offset1+tj].g=datargbO[offset2+jj].g;
datargb[offset1+tj].b=datargbO[offset2+jj].b;
}
}//end ti,tj if
}//end l circle
}//end k circle
}//end jj if
}//end j circle
}//end ii if
}//end i circle
#ifdef _MAC
// First swap the size field
*((LPDWORD)pDIB) = SWAPLONG(*((LPDWORD)pDIB));
// Now swap the rest of the structure
ByteSwapInfo(pDIB, IS_WIN30_DIB(pDIB));
#endif
::GlobalUnlock((HGLOBAL) hDIBO);
::GlobalUnlock((HGLOBAL) hDIB);
return hDIB;
}
HDIB WINAPI GetRedOfREDGREEN(HDIB hDIBRedGreen)
{
LPBITMAPINFOHEADER RGbminfoHeader;
DWORD dwBitsSizeR;
HDIB hDIB;
LPSTR pDIB,pDIBRG,data;
LPixel24bits datarg;
/*
* Allocate memory for DIB
*/
/* pDIBRG=(LPSTR) ::GlobalLock((HGLOBAL) hDIBRedGreen);
RGbminfoHeader= (LPBITMAPINFOHEADER)pDIBRG;
dwBitsSizeR=sizeof(BITMAPINFOHEADER)
+256*sizeof(RGBQUAD)
+RGbminfoHeader->biWidth*RGbminfoHeader->biHeight;
hDIB = (HDIB) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT,dwBitsSizeR);
if (hDIB == 0 )
{
return NULL;
}
pDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);
LPBITMAPINFOHEADER p_bminfo = (LPBITMAPINFOHEADER)pDIB;
p_bminfo->biSize = sizeof(BITMAPINFOHEADER);
p_bminfo->biWidth = RGbminfoHeader->biWidth;
p_bminfo->biHeight =RGbminfoHeader->biHeight;
p_bminfo->biPlanes = 1;
p_bminfo->biBitCount =8;
p_bminfo->biCompression = BI_RGB;
p_bminfo->biSizeImage = (long)RGbminfoHeader->biWidth*
(long)RGbminfoHeader->biHeight;
p_bminfo->biXPelsPerMeter = 0;
p_bminfo->biYPelsPerMeter = 0;
p_bminfo->biClrUsed = 0;
p_bminfo->biClrImportant = 0;
/*
* Go read the bits.
*/
/* datarg=(LPixel24bits)(pDIBRG+sizeof(BITMAPINFOHEADER)+0* sizeof(RGBQUAD));
data=pDIB+sizeof(BITMAPINFOHEADER)+256* sizeof(RGBQUAD);
int i,j,offset;
for(i=0;i<RGbminfoHeader->biHeight;i++)
{
offset=(RGbminfoHeader->biHeight-1-i)*RGbminfoHeader->biWidth;
for(j=0;j<RGbminfoHeader->biWidth;j++)
{
data[offset+j]=datarg[offset+j].r;
}//j circle
}//i circle
#ifdef _MAC
// First swap the size field
*((LPDWORD)pDIB) = SWAPLONG(*((LPDWORD)pDIB));
// Now swap the rest of the structure
ByteSwapInfo(pDIB, IS_WIN30_DIB(pDIB));
#endif
::GlobalUnlock((HGLOBAL) hDIBRedGreen);
::GlobalUnlock((HGLOBAL) hDIB);
return hDIB;
}
void WINAPI MvImageREDGREEN(HDIB hDIBRed,HDIB hDIBRedGreen,int i0,int j0)
{
LPBITMAPINFOHEADER RbminfoHeader,RGbminfoHeader;
LPSTR pDIBR,pDIBRG,datar;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -