Creating a Low Resolution Viewfile
Description
When you create an image database, you may want to have a low resolution viewfile to represent a higher resolution image. Typically, the viewfile would be used when you want to quickly put an image on the screen, without moving megabytes of data.
The following script illustrates a technique for creating a low resolution viewfile on the fly. Presumably, you would save the viewfiles you create along side their higher resolution partners. This script was attached to the OnFetch() event of a form with an image control named bitmap1. and a text field named Fname.
dim imag as B dim pth as C dim fptr as P pth = a5.get_path()+ chr(92)
Test whether we have a filename for the picture in the control Fname. If yes, then read the picture into a blob variable named imag. Next, load imag into a memory buffer named hres with UI_BITMAP_LOAD().
if (alltrim(Fname.text) <> "") then imag = file.to_blob(Fname.text) ui_bitmap_load("hres", imag)
Create a new memory buffer named lres with UI_BITMAP_CREATE(), then fill it with a stretched version of hres.
ui_bitmap_create("lres", 4, 3) ui_bitmap_draw("lres", <<%code% bitmap("hres", 0, 0, 4, 3, "stretch") %code%)
Move the memory buffer named lres into the imag variable with UI_BITMAP_SAVE() and save it to disk with <FILE>.WRITEB() . Remove the lres and hres buffers from memory.
imag = ui_bitmap_save("lres") fptr = file.create(pth + "lres.bmp", FILE_RW_EXCLUSIVE) fptr.writeb(imag) fptr.close() ui_bitmap_drop("lres") ui_bitmap_drop("hres")
Display the low resolution image on the form. If there was no high resolution image to display, display white.bmp.
bitmap1.bitmap.filename = pth + "lres.bmp" bitmap1.Refresh() else bitmap1.bitmap.filename = pth + "white.bmp" bitmap1.Refresh() end if