; ; ------------------------------------------------------------ ; ; PureBasic - ImagePlugin example file ; ; (c) Fantaisie Software ; ; ------------------------------------------------------------ ; ; Enable all the decoders than PureBasic actually supports ; UseJPEGImageDecoder() UseTGAImageDecoder() UsePNGImageDecoder() UseTIFFImageDecoder() ; Enable all the encoders than PureBasic actually supports ; UseJPEGImageEncoder() UsePNGImageEncoder() If OpenWindow(0, 0, 0, 250, 130, "PureBasic - Image Converter", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) CreateToolBar(0, WindowID(0)) ToolBarImageButton(0, LoadImage(0, #PB_Compiler_Home + "examples/sources/Data/ToolBar/Open.png")) ToolBarImageButton(1, LoadImage(0, #PB_Compiler_Home + "examples/sources/Data/ToolBar/Save.png")) DisableToolBarButton(0, 1, 1) ; disable the save button ImageGadget(0, 0, 28, WindowWidth(0), WindowHeight(0), 0, #PB_Image_Border) Repeat Event = WaitWindowEvent() If Event = #PB_Event_Menu ; ToolBar are acting as menu Select EventMenu() Case 0 ; Open Filename$ = OpenFileRequester("Choose a picture", "", "All Images Formats|*.bmp;*.jpg;*.png;*.tif;*.tga", 0) If Filename$ If LoadImage(0, Filename$) SetGadgetState(0, ImageID(0)) ; change the picture in the gadget DisableToolBarButton(0, 1, 0) ; enable the save button ResizeWindow(0, #PB_Ignore, #PB_Ignore, ImageWidth(0)+4, ImageHeight(0)+34) EndIf EndIf Case 1 ; Save Filename$ = SaveFileRequester("Save a picture", Left(Filename$, Len(Filename$)-Len(GetExtensionPart(Filename$))-1), "BMP Format|*.bmp|JPEG Format|*.jpg|PNG Format|*.png", 0) If Filename$ Select SelectedFilePattern() Case 0 ; BMP ImageFormat = #PB_ImagePlugin_BMP Extension$ = "bmp" Case 1 ; JPEG ImageFormat = #PB_ImagePlugin_JPEG Extension$ = "jpg" Case 2 ; PNG ImageFormat = #PB_ImagePlugin_PNG Extension$ = "png" EndSelect If LCase(GetExtensionPart(Filename$)) <> Extension$ Filename$ + "." + Extension$ EndIf If SaveImage(0, Filename$, ImageFormat) MessageRequester("Information", "Image saved successfully", 0) EndIf EndIf EndSelect EndIf Until Event = #PB_Event_CloseWindow ; If the user has pressed on the close button EndIf End ; All is automatically freed by PureBasic