This isn't using GDI to convert it to a 1 bpp image though.... It is
only using GDI to store it to a byte array:

                        // Convert image to 1 bit format doing threshold
                        m_myTessBaseAPIInstance->CopyImageToTesseract(scan0, 
bpp, stride,
0, 0, rect.Width, rect.Height);

On Feb 5, 1:04 am, rthomas <[email protected]> wrote:
> Hi,
>
> James and Jessica, the question you are asking here are beginner dev
> question, not tesseract specific.
> If you want to read BMP, TIFF, JPG, PNG images under Windows (native C+
> + or .NET) use GdiPlus.
> It's free, well documented and you have a working example with
> Tesseract.
> In Google "GdiPlus Library" gives 
> youhttp://msdn.microsoft.com/en-us/library/ms533798(VS.85).aspx
> Always in Google "GdiPlus tutorial" gives 
> youhttp://www.codeproject.com/KB/GDI-plus/startinggdiplus.aspx
> to read image file (one line of 
> code)http://www.codeproject.com/KB/GDI-plus/cgdiplusbitmap.aspx
> and to use it in C++ tesseract 
> downloadhttp://www.pixel-technology.com/freeware/tessnet2/src.zip
> open tessnet2.cpp and look for
> tessnet2::Tesseract::PutImage
> line 272
>
> Rémi
>
> On Feb 4, 6:25 pm, JamesBaker <[email protected]> wrote:
>
> > Jessicia: I am working towards the same objective, but I have come
> > into problems with linking, this code works, but when I call tessdll
> > functions I am getting errors with both linking and access violations:
>
> > Also, if anyone can help me here as there is very little
> > documentation, is this the right method? I have no idea wether or not
> > I am grabbing the correct BMP data or not. Do I need the whole MS DIB
> > bitmap format: data + header, or just the data?
>
> > unsigned char* ScreenCap(int x, int y, int w, int h) //PORT (w,h) ???
> > {
> >         //int nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
> >         //int nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
>
> >         int portedX = x * resolution.first.first / resolution.second.first;
> >         int portedY = y * resolution.first.second / 
> > resolution.second.second;
>
> >         HWND hDesktopWnd = GetDesktopWindow();
> >         HDC hDesktopDC = GetDC(mtgowin);
> >         HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);
> >         HBITMAP hCaptureBitmap =CreateCompatibleBitmap(hDesktopDC, w, h);
> >         SelectObject(hCaptureDC,hCaptureBitmap);
> >         BitBlt(hCaptureDC,0,0,w,h,hDesktopDC, portedX,portedY,SRCCOPY);
>
> >         //convert to unsigned char[]
>
> >         BITMAPINFO bmpInfo;
>
> >         HDC hdc=GetDC(NULL);
> >         ZeroMemory(&bmpInfo,sizeof(BITMAPINFO));
> >         bmpInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
>
> >         GetDIBits(hdc,hCaptureBitmap,0,0,NULL, &bmpInfo,DIB_RGB_COLORS);
> >         //unsigned char* retArray = new unsigned char
> > [bmpInfo.bmiHeader.biSizeImage];
> >         LPVOID retArray = malloc(bmpInfo.bmiHeader.biSizeImage);
>
> >         bmpInfo.bmiHeader.biCompression=BI_RGB;
> >         GetDIBits(hdc,hCaptureBitmap,0,bmpInfo.bmiHeader.biHeight, retArray,
> > &bmpInfo, DIB_RGB_COLORS);
>
> >         ReleaseDC(hDesktopWnd,hDesktopDC);
> >         DeleteDC(hCaptureDC);
> >         DeleteObject(hCaptureBitmap);
> >         if(hdc)     ReleaseDC(NULL,hdc);
>
> >         return (unsigned char*)retArray;
>
> > }
>
> > On Feb 4, 8:39 am, Jessica <[email protected]> wrote:
>
> > > At first I was using tessdll.
> > > I need to convert a bitmap that I have in memory to an unsigned char
> > > *.
> > > I used LockBit, then Scan0 on the BitmapData, and I have my unsigned
> > > char *.
>
> > > Unfortunately this does not work when passed to TessDLL api.
>
> > > Do you know how to format the unsigned char * the way tess dll wants
> > > it?
>
> > > On 4 fév, 14:36, rthomas <[email protected]> wrote:
>
> > > > Yes this is a .NET project but the C++ code source is the same for
> > > > GdiPlus API.
> > > > You can understand how to use LockBit.
>
> > > > Remi
>
> > > > On Feb 4, 12:58 pm, Jessica <[email protected]> wrote:
>
> > > > > Thank you very much for your answer rthomas.
>
> > > > > I don't know at all .NET in fact.
> > > > > My project is a traditionnal c++ project (windows application). I'd
> > > > > like to use the .net assembly in this project.
> > > > > Is it possible?
>
> > > > > In the link you gave me , apparently you need to use the tessnet2 in
> > > > > a .net project. Is it possible to easily switch from a c++ project to
> > > > > a .net project? What are the differences?
>
> > > > > Thanks!
>
> > > > > On 4 fév, 12:07, rthomas <[email protected]> wrote:
>
> > > > > > Hi,
>
> > > > > > Look tessnet2 source code, It's done with 
> > > > > > Gdi+.http://www.pixel-technology.com/freeware/tessnet2/src.zip
>
> > > > > > Rémi
>
> > > > > > On Feb 4, 10:22 am, Jessica <[email protected]> wrote:
>
> > > > > > > Hi,
>
> > > > > > > I have a big problem.
> > > > > > > I want to ocr screenshots.
>
> > > > > > > I am under windows vista, using c++, gdi+
>
> > > > > > > I have a Gdiplus::Bitmap, I need to convert it to an unsigned 
> > > > > > > char *
> > > > > > > to put it in TessDLLAPI (I'm using tessdll.dll)
>
> > > > > > > I used the function LockBits to get a BitmapData and then scan0 
> > > > > > > to get
> > > > > > > an unsigned char *
> > > > > > > But this does not work!
>
> > > > > > > I don't know how to format it.
> > > > > > > Could someone help me please?
>
> > > > > > > Thank you!- Hide quoted text -
>
> > > > > - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"tesseract-ocr" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/tesseract-ocr?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to