![]()  | 
![]()  | 
![]()  | 
![]()  | 
Convert an image from one type to another
PhImage_t *PiConvertImage( PhImage_t *image,
                           PhRect_t const *bounds,
                           int type,
                           int flags )
You can pass 0 for no type conversion.
ph
This function converts a Photon image from one type to another. It allocates space for the resulting image, leaving the original image untouched. If you set the Pi_FREE flag bit, the function frees the old image by setting all its release flags and calling PhReleaseImage() on it.
A pointer to the new, converted image on success, or NULL if an error occurred.
This example loads a file, resizes it to 200 x 200 thumbnail, and then converts it to a palette-based image before displaying it in a PtLabel:
#include <stdlib.h>
#include <stdio.h>
/* Toolkit headers */
#include <Pt.h>
#include <photon/PxImage.h>
int main(int argc, char *argv[]) {
    PtWidget_t *window;
    PtArg_t    args[2];
    PhImage_t *img, *resized_img, *new_img;
    short width = 200;
    short height = 200;
   if (PtInit(NULL) == -1)
      PtExit(EXIT_FAILURE);
    printf("Loading file: %s\n", argv[1]);      
  
    // load the image
    if ( NULL== (img = PxLoadImage(argv[1], NULL ))){
        printf("PxLoadImage() error.\n");
    }       
    
    // resize the image
    if ( NULL== (resized_img  = PiResizeImage( img, NULL, width,
                                               height, 0 ))){
        printf("PiResizeImage() error.\n");
    }
    
    // convert the image to the current Photon palette:
    if (NULL == (new_img = PiConvertImage( resized_img, NULL,
                               Pg_IMAGE_PALETTE_BYTE,
                               Pi_CALC_PALETTE | Pi_DITHER ))){
        printf("PiConvertImage() error.\n");
    }
    
    // setting these flags ensures the image is released 
    // when the widget is destroyed:
    new_img->flags |= Ph_RELEASE_IMAGE|Ph_RELEASE_PALETTE|
        Ph_RELEASE_TRANSPARENCY_MASK|Ph_RELEASE_GHOST_BITMAP;
    
    window = PtCreateWidget(PtWindow, Pt_NO_PARENT, 0, NULL);   
    PtSetArg(&args[0], Pt_ARG_LABEL_IMAGE, new_img, 0);  
    PtSetArg(&args[1], Pt_ARG_LABEL_TYPE, Pt_IMAGE,0);
    PtCreateWidget(PtLabel, window, 2, args);
    PtRealizeWidget(window);
    
    PtMainLoop();   
    return (EXIT_SUCCESS);
}
Photon
| Safety: | |
|---|---|
| Interrupt handler | No | 
| Signal handler | No | 
| Thread | No | 
PhCreateImage(), PhImage_t, PhRect_t, PiDuplicateImage(), PiFlipImage(), PiResizeImage()
“Images” in the Raw Drawing and Animation chapter of the Photon Programmer's Guide
![]()  | 
![]()  | 
![]()  | 
![]()  |