---
name: "XpmCreateBuffer"
section: "3"
platform: "linux"
package: "libxpm"
version: "3.5.20-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/XpmCreateBuffer"
---

# XpmCreateBuffer(3)

create an XPM Buffer

## NAME

XpmCreateBuffer - create an XPM Buffer

## SYNOPSIS

```
int XpmCreateBufferFromImage(Display *display , char **buffer_return,
XImage *image, XImage *shapeimage, XpmAttributes *attributes);
int XpmCreateBufferFromPixmap(Display *display, char **buffer_return,
Pixmap pixmap, Pixmap shapemask, XpmAttributes *attributes);
int XpmCreateBufferFromXpmImage(char **buffer_return, XpmImage *image,
XpmInfo *info);
```

## ARGUMENTS

- *display*

  Specifies the connection to the X server.

- *buffer\_return*

  Returns the buffer which is created.

- *image*

  Specifies the image.

- *shapeimage*

  Specifies the shape mask image.

- *attributes*

  Specifies the location of a structure containing information (or NULL).

- *info*

  Specifies the location of a structure to get possible information (or NULL).

## DESCRIPTION

### XpmCreateBufferFromPixmap

**XpmCreateBufferFromPixmap**() creates an XPM buffer from a Pixmap. The **XpmCreateBufferFromPixmap**() function works as [**XpmWriteFileFromPixmap**(3)](/XpmWriteFileFromPixmap/3.md), it just calls **XpmCreateBufferFromImage**() instead of [**XpmWriteFileFromImage**(3)](/XpmWriteFileFromImage/3.md). Once again, the caller should free the buffer using [**XpmFree**(3)](/XpmFree/3.md) when finished.

As a convenience, the [**XpmReadFileToBuffer**(3)](/XpmReadFileToBuffer/3.md) and [**XpmWriteFileFromBuffer**(3)](/XpmWriteFileFromBuffer/3.md) functions are provided to copy a file to a buffer and to write a file from a buffer. Thus for instance one may decide to use **XpmCreateBufferFromPixmap**(), [**XpmWriteFileFromBuffer**(3)](/XpmWriteFileFromBuffer/3.md), and [**XpmFree**(3)](/XpmFree/3.md) instead of [**XpmWriteFileFromPixmap**(3)](/XpmWriteFileFromPixmap/3.md). On some systems this may lead to a performance improvement, since the processing will be performed in memory, but it uses more memory.

### XpmCreateBufferFromImage

The **XpmCreateBufferFromImage**() function works as [**XpmWriteFileFromImage**(3)](/XpmWriteFileFromImage/3.md), it just writes to a malloc’ed buffer instead of to a file. The caller should free the buffer using [**XpmFree**(3)](/XpmFree/3.md) when finished.

### XpmCreateBufferFromXpmImage.

To create an XPM buffer from an XpmImage, use **XpmCreateBufferFromXpmImage**(). The **XpmCreateBufferFromXpmImage**() function writes out the given image to a single block malloc’ed buffer in XPM format. If insufficient working storage is allocated, it returns **XpmNoMemory**, and returns **XpmSuccess** on success. If the passed XpmInfo structure pointer is not NULL, **XpmCreateBufferFromXpmImage**() looks for the following attributes: XpmComments, XpmExtensions, and XpmHotspot, and writes the related information out as well. The caller should free the buffer using [**XpmFree**(3)](/XpmFree/3.md) when finished.

## SEE ALSO

[**XpmFree**(3)](/XpmFree/3.md), [**XpmWriteFileFromBuffer**(3)](/XpmWriteFileFromBuffer/3.md), [**XpmWriteFileFromImage**(3)](/XpmWriteFileFromImage/3.md), [**XpmWriteFileFromPixmap**(3)](/XpmWriteFileFromPixmap/3.md)
