gtk- Binding to the Gtk+ graphical user interface library.

Portabilityportable (depends on GHC)
Safe HaskellNone




A widget displaying an image



The Image widget displays an image. Various kinds of object can be displayed as an image; most typically, you would load a Pixbuf ("pixel buffer") from a file, and then display that. There's a convenience function to do this, imageNewFromFile, used as follows: If the file isn't loaded successfully, the image will contain a "broken image" icon similar to that used in many web browsers. If you want to handle errors in loading the file yourself, for example by displaying an error message, then load the image with pixbufNewFromFile, then create the Image with imageNewFromPixbuf.

 image <- imageNewFromFile "myfile.png"

The image file may contain an animation, if so the Image will display an animation (PixbufAnimation) instead of a static image.

Image is a subclass of Misc, which implies that you can align it (center, left, right) and add padding to it, using Misc methods.

Image is a "no window" widget (has no DrawWindow of its own), so by default does not receive events. If you want to receive events on the image, such as button clicks, place the image inside a EventBox, then connect to the event signals on the event box.

When handling events on the event box, keep in mind that coordinates in the image may be different from event box coordinates due to the alignment and padding settings on the image (see Misc). The simplest way to solve this is to set the alignment to 0.0 (left/top), and set the padding to zero. Then the origin of the image will be the same as the origin of the event box.

Sometimes an application will want to avoid depending on external data files, such as image files. Gtk+ comes with a program to avoid this, called gdk-pixbuf-csource. This program allows you to convert an image into a C variable declaration, which can then be loaded into a Pixbuf using pixbufNewFromInline.

Class Hierarchy

 | GObject
 | +----Object
 | +----Widget
 | +----Misc
 | +----Image


class MiscClass o => ImageClass o Source


data ImageType Source

Describes the image data representation used by a Image. If you want to get the image from the widget, you can only get the currently-stored representation. e.g. if the imageStorageType is ImagePixbuf, then you can call imageGetPixbuf but not imageGetStock. For empty images, you can request any storage type (call any of the get functions), but they will all return Nothing.


imageNewFromFile :: FilePath -> IO ImageSource

Creates a new Image displaying the file filename. If the file isn't found or can't be loaded, the resulting Image will display a "broken image" icon.

If the file contains an animation, the image will contain an animation.

If you need to detect failures to load the file, use pixbufNewFromFile to load the file yourself, then create the Image from the pixbuf. (Or for animations, use pixbufAnimationNewFromFile).

The storage type (imageGetStorageType) of the returned image is not defined, it will be whatever is appropriate for displaying the file.

imageNewFromPixbuf :: Pixbuf -> IO ImageSource

Creates a new Image displaying a Pixbuf.

Note that this function just creates an Image from the pixbuf. The Image created will not react to state changes. Should you want that, you should use imageNewFromIconSet.



:: StockId

stockId - a stock icon name

-> IconSize

size - a stock icon size

-> IO Image 

Creates a Image displaying a stock icon. If the stock icon name isn't known, the image will be empty.

imageNew :: IO ImageSource

Creates a new empty Image widget.



:: String

iconName - an icon name

-> IconSize

size - a stock icon size

-> IO Image 

Creates a Image displaying an icon from the current icon theme. If the icon name isn't known, a "broken image" icon will be displayed instead. If the current icon theme is changed, the icon will be updated appropriately.

  • Available since Gtk+ version 2.6


imageGetPixbuf :: Image -> IO PixbufSource

Gets the Pixbuf being displayed by the Image. The storage type of the image must be ImageEmpty or ImagePixbuf (see imageGetStorageType).

imageSetFromPixbuf :: Image -> Pixbuf -> IO ()Source

Overwrite the current content of the Image with a new Pixbuf.

imageSetFromAnimation :: PixbufAnimationClass animation => Image -> animation -> IO ()Source



:: Image 
-> StockId

stockId - a stock icon name

-> IconSize

size - a stock icon size

-> IO () 

See imageNewFromStock for details.



:: Image 
-> String

iconName - an icon name

-> IconSize

size - an icon size

-> IO () 

See imageNewFromIconName for details.

  • Available since Gtk+ version 2.6



:: Image 
-> Int

pixelSize - the new pixel size

-> IO () 

Sets the pixel size to use for named icons. If the pixel size is set to a value /= -1, it is used instead of the icon size set by imageSetFromIconName.

  • Available since Gtk+ version 2.6

imageGetPixelSize :: Image -> IO IntSource

Gets the pixel size used for named icons.

  • Available since Gtk+ version 2.6

imageClear :: Image -> IO ()Source

Resets the image to be empty.

  • Available since Gtk+ version 2.8

Icon Sizes

data IconSize Source

The size of an icon in pixels.

  • This enumeration contains one case that is not exported and which is used when new sizes are registered using iconSizeRegister.
  • Applying show to this type will reveal the name of the size that is registered with Gtk+.



Don't scale but use any of the available sizes.


Icon size to use in next to menu items in drop-down menus.


Icon size for small toolbars.


Icon size for larger toolbars.


Icon size for icons in buttons, next to the label.


Icon size for icons in drag-and-drop.


Icon size for icons next to dialog text.

IconSizeUser Int 


imagePixbuf :: PixbufClass pixbuf => ReadWriteAttr Image Pixbuf pixbufSource

A Pixbuf to display.

imagePixmap :: PixmapClass pixmap => ReadWriteAttr Image Pixmap pixmapSource

A Pixmap to display.

imageMask :: PixmapClass pixmap => ReadWriteAttr Image Pixmap pixmapSource

Mask bitmap to use with Image or Pixmap.

imageAnimation :: (PixbufClass pixbuf, PixbufAnimationClass animation) => ReadWriteAttr Image animation pixbufSource

imageImage :: ImageClass image => ReadWriteAttr Image Image imageSource

A Image to display.

imageFile :: Attr Image StringSource

Filename to load and display.

Default value: ""

imageStock :: Attr Image StringSource

Stock ID for a stock image to display.

Default value: ""

imageIconSize :: Attr Image IntSource

Symbolic size to use for stock icon, icon set or named icon.

Allowed values: >= 0

Default value: 4

imagePixelSize :: Attr Image IntSource

The pixel-size property can be used to specify a fixed size overriding the icon-size property for images of type ImageIconName.

Allowed values: >= -1

Default value: -1

imageIconName :: Attr Image StringSource

The name of the icon in the icon theme. If the icon theme is changed, the image will be updated automatically.

Default value: ""

imageStorageType :: ReadAttr Image ImageTypeSource

The representation being used for image data.

Default value: ImageEmpty