FW_SaveImage

Post Reply
Natter
Posts: 1226
Joined: Mon May 14, 2007 9:49 am

FW_SaveImage

Post by Natter »

Hi,

I create an image in A2 format.

Code: Select all | Expand

hBmp :=FW_MakeYour Bitmap(7016, 4961, {|hDc|FW_DrawImage(),..})
Then I save it to file

Code: Select all | Expand

FW_SaveImage(bmp, "myfile")
Everything is fine.

I create an image in A1 format.

Code: Select all | Expand

hBmp:=FW_MakeYour Bitmap(9933, 7016, {|hDc|FW_DrawImage(),..})
When saving it to a file, the program terminates without an error. I understand that there is not enough memory. What can be predicted ?
User avatar
nageswaragunupudi
Posts: 10691
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: FW_SaveImage

Post by nageswaragunupudi »

When saving it to a file, the program terminates without an error. I understand that there is not enough memory.
Possible.
But I tried with the same size it is working for me quite well.
This is my sample program

Code: Select all | Expand

function LargeBmp()

   local hBmp

   ? "start"

   hBmp  := FW_MakeYourBitmap(9933, 7016, <|hDc,w,h|
      local aBmp
      aBmp  := FW_ReadImage( nil, "..\bitmaps\sea.bmp", , .t. )
      FW_DrawImage( hDC, aBmp[ 1 ],              { 0, 0, 768*4, 1024*4, 1 } )
      FW_DrawImage( hDC, "..\bitmaps\olga1.jpg", { 0, 1024*4, 450*7, 1024*4 + 352*7, 1 } )
      FW_DrawImage( hDC, aBmp[ 1 ],              { 3200, 0, 3200+768*4, 1024*4, 1 } )
      FW_DrawImage( hDC, "..\bitmaps\olga1.jpg", { 3200, 1024*4, 3200+450*7, 1024*4 + 352*7, 1 } )
      PalBmpFree( aBmp )
      return nil
      > )

   ? hbmp

   FW_SaveImage( hBmp, "large.png" )
   DeleteObject( hBmp )

   ? "saved"

   XImage( "large.png" )

return nil
I am able to see the image well.
If you want I can also post a screenshot
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
Posts: 10691
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: FW_SaveImage

Post by nageswaragunupudi »

Did you try my sample program?
Regards

G. N. Rao.
Hyderabad, India
Natter
Posts: 1226
Joined: Mon May 14, 2007 9:49 am

Re: FW_SaveImage

Post by Natter »

Yes, your example works well. But files in A1 and A0 format do not want to be saved from my program :cry:

I am trying to make an option with the creation of several bitmap files and their subsequent gluing.
Is it possible to split hBmp into several parts and save them as separate files ?
User avatar
nageswaragunupudi
Posts: 10691
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: FW_SaveImage

Post by nageswaragunupudi »

Yes, your example works well. But files in A1 and A0 format do not want to be saved from my program.
How can I help you?
Can you send me a test program of yours to my personal email?
nageswaragunupudi [at] gmail [dot] com
I am trying to make an option with the creation of several bitmap files and their subsequent gluing.
For gluing, you can use the function

Code: Select all | Expand

FW_StitchImages( uImage1, uImage2, [cSide], [cType] ) --> newImage
uImage1 and uImage2: can be hBitmap or any image-file or any image-buffer of any type.
cSide: Can be "R" or "B". R for Right and B for bottom. Default Bottom
cType: If the parameter is nil, the result is hBitmap
if cType is "bmp", "jpg", "png" the result is an image buffer of the type speicified, which can be saved to a file directly wih MEMOWRIT
if cType is .T., then the result type is the type of the first image.
Is it possible to split hBmp into several parts and save them as separate files ?

Code: Select all | Expand

FW_TransformBitmap( hBmp, aCrop ) --> hCroppedBmp
Regards

G. N. Rao.
Hyderabad, India
Natter
Posts: 1226
Joined: Mon May 14, 2007 9:49 am

Re: FW_SaveImage

Post by Natter »

Thank you, Rao, very interesting functions - FW_StitchImages and FW_TransformBitmap. I'll try with them
Natter
Posts: 1226
Joined: Mon May 14, 2007 9:49 am

Re: FW_SaveImage

Post by Natter »

I wanted to divide the hBmp into 3 parts - 33%, 33% and 34%
How can I do this using the FW_Transform Bitmap function ?
User avatar
nageswaragunupudi
Posts: 10691
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: FW_SaveImage

Post by nageswaragunupudi »

Try this sample which splits and again glues together

Code: Select all | Expand

#include "fivewin.ch"

function Main()

   local cSource  := "\fwh\bitmaps\sea.bmp"
   local aSave
   local hSource, aBmp
   local nWidth, nHeight, h, n, c, nTop, nBot
   local nParts   := 3

   hSource  := FW_ReadImage( nil, cSource )[ 1 ] // hBitmap
   nWidth   := GetBmpWidth(  hSource )
   nHeight  := GetBmpHeight( hSource )
   h        := Int( nHeight / nParts )

   nTop        := 0
   aBmp        := Array( nParts )

   for n := 1 to nParts
      nBot  := If( n == nParts, nHeight, nTop + h )
      aBmp[ n ]   := FW_TransformBitmap( hSource, { nTop, 0, nBot, nWidth } )
      nTop  := nBot
   next

   DeleteObject( hSource )

   // SaveAs png files
   aSave    := Array( nParts )
   for n := 1 to nParts
      aSave[ n ] := BeforAtNum( ".", cSource ) + cValToStr( n ) + ".png"
      FW_SaveImage( aBmp[ n ], aSave[ n ] )
      DeleteObject( aBmp[ n ] )
   next

   // View all the saved parts
   xbrowser aSave SETUP ( ;
      oBrw:aCols[ 1 ]:cDataType := "F", ;
      oBrw:nMarqueeStyle := 0 )

   // Let us now glue all the parts and view the reconstructed full image

   c  := aSave[ 1 ]
   for n := 2 to nParts
      c  := FW_StitchImages( c, aSave[ n ], , "png" )
   next

   // save the glued image to file
   MEMOWRIT( "new.png", c )
   XImage( "new.png" )

return aSave
 
Image
Regards

G. N. Rao.
Hyderabad, India
Natter
Posts: 1226
Joined: Mon May 14, 2007 9:49 am

Re: FW_SaveImage

Post by Natter »

I think the problem is not saving large formats through the FW_SaveImage function.

To get a larger format, I expanded the dialog box to the desired size (oDld:Move()). Further, moving this dialog according to the specified algorithm, I received the device context of the screen. It used to work, now it doesn't.
Post Reply