User Tools

Site Tools


saving_20a_20tiff_20image

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
saving_20a_20tiff_20image [2018/03/31 13:19] – external edit 127.0.0.1saving_20a_20tiff_20image [2024/01/05 00:21] (current) – external edit 127.0.0.1
Line 1: Line 1:
 =====Saving a TIFF image===== =====Saving a TIFF image=====
  
-//by Richard Russell, October 2010//\\ \\  This article describes how to save an image as a TIFF file. It relies on the presence of the //GDI Plus// library so will work only on Windows XP (or later) or if you have specifically installed **GDIPLUS.DLL** on the target computer. Microsoft permits you to redistribute this file so you can include it with your program if necessary.\\ \\  To begin with you need to have a **handle** to the bitmap you want to save (see below if instead the bitmap is in the form of a **DIB**). One way of obtaining a handle is to load the image from a file (e.g. a BMP file):\\ \\ +//by Richard Russell, October 2010//\\ \\  This article describes how to save an image as a TIFF file. It relies on the presence of the //GDI Plus// library so will work only on Windows XP (or later) or if you have specifically installed **GDIPLUS.DLL** on the target computer. Microsoft permits you to redistribute this file so you can include it with your program if necessary.\\ \\  To begin with you need to have a **handle** to the bitmap you want to save (see below if instead the bitmap is in the form of a **DIB**). One way of obtaining a handle is to load the image from a file (e.g. a BMP file): 
 + 
 +<code bb4w> 
         bmpfile$ = "\Windows\Soap Bubbles.bmp"         bmpfile$ = "\Windows\Soap Bubbles.bmp"
         SYS "LoadImage", 0, bmpfile$, 0, 0, 0, 16 TO hbitmap%         SYS "LoadImage", 0, bmpfile$, 0, 0, 0, 16 TO hbitmap%
-Here the image is loaded at its original size. You can alternatively scale the image to different dimensions:\\ \\ +</code> 
 + 
 +Here the image is loaded at its original size. You can alternatively scale the image to different dimensions: 
 + 
 +<code bb4w>
         bmpfile$ = "\Windows\Soap Bubbles.bmp"         bmpfile$ = "\Windows\Soap Bubbles.bmp"
         SYS "LoadImage", 0, bmpfile$, 0, dx%, dy%, 16 TO hbitmap%         SYS "LoadImage", 0, bmpfile$, 0, dx%, dy%, 16 TO hbitmap%
-Where **dx%** and **dy%** are the wanted width and height of the image respectively (the scaling quality is not particularly good so for best results you might prefer to scale the image using a third-party program).\\ \\  There are a number of other ways in which you might obtain a bitmap handle, which are outside the scope of this article. You can easily obtain a handle to whatever is displayed in your program's output window:\\ \\ +</code> 
 + 
 +Where **dx%** and **dy%** are the wanted width and height of the image respectively (the scaling quality is not particularly good so for best results you might prefer to scale the image using a third-party program).\\ \\  There are a number of other ways in which you might obtain a bitmap handle, which are outside the scope of this article. You can easily obtain a handle to whatever is displayed in your program's output window: 
 + 
 +<code bb4w>
         SYS "GetCurrentObject", @memhdc%, 7 TO hbitmap%         SYS "GetCurrentObject", @memhdc%, 7 TO hbitmap%
-but this ordinarily returns the //entire// 1920 x 1440 bitmap which is probably not what you want. To save just a region of your program's output window the easiest way is probably to save it first as a BMP file (using ***GSAVE**) then load it using LoadImage as shown above.\\ \\  Once you've got a handle to the bitmap you simply save it as a TIFF file as follows:\\ \\ +</code> 
 + 
 +but this ordinarily returns the //entire// 1920 x 1440 bitmap which is probably not what you want. To save just a region of your program's output window the easiest way is probably to save it first as a BMP file (using ***GSAVE**) then load it using LoadImage as shown above.\\ \\  Once you've got a handle to the bitmap you simply save it as a TIFF file as follows: 
 + 
 +<code bb4w>
         PROCsavetiff(hbitmap%, filename$)         PROCsavetiff(hbitmap%, filename$)
-Here **filename$** is the name of the TIFF file to create.\\ \\  One you've saved the file you should delete the bitmap handle:\\ \\ +</code> 
 + 
 +Here **filename$** is the name of the TIFF file to create.\\ \\  One you've saved the file you should delete the bitmap handle: 
 + 
 +<code bb4w>
         SYS "DeleteObject", hbitmap%         SYS "DeleteObject", hbitmap%
-Finally, here's the code for **PROCsavetiff** itself:\\ \\ +</code> 
 + 
 +Finally, here's the code for **PROCsavetiff** itself: 
 + 
 +<code bb4w>
         DEF PROCsavetiff(hbitmap%, filename$)         DEF PROCsavetiff(hbitmap%, filename$)
         LOCAL gdiplus%, ole32%         LOCAL gdiplus%, ole32%
Line 59: Line 81:
  
         ENDPROC         ENDPROC
-\\  If, instead of a bitmap **handle**, you have a bitmap (DIB) stored in memory you can use this alternative routine:\\ +</code> 
 + 
 +If, instead of a bitmap **handle**, you have a bitmap (DIB) stored in memory you can use this alternative routine: 
 + 
 +<code bb4w>
         DEF PROCsavetiffdib(dib%, bmi%, filename$)         DEF PROCsavetiffdib(dib%, bmi%, filename$)
         LOCAL gdiplus%, ole32%         LOCAL gdiplus%, ole32%
Line 105: Line 131:
  
         ENDPROC         ENDPROC
-\\  You would call it as follows:\\ +</code> 
 +You would call it as follows: 
 + 
 +<code bb4w>
         PROCsavetiffdib(dibits%, bmi{}, filename$)         PROCsavetiffdib(dibits%, bmi{}, filename$)
 +</code>
 +
 where **dibits%** is the address of the bitmap data and **bmi{}** is a BITMAPINFO structure containing the dimensions etc. and (optionally) colour palette for the bitmap. where **dibits%** is the address of the bitmap data and **bmi{}** is a BITMAPINFO structure containing the dimensions etc. and (optionally) colour palette for the bitmap.
saving_20a_20tiff_20image.1522502379.txt.gz · Last modified: 2024/01/05 00:16 (external edit)