方法

GdkPixbufPixbufsave

声明 [源]

gboolean
gdk_pixbuf_save (
  GdkPixbuf* pixbuf,
  const char* filename,
  const char* type,
  GError** error,
  ...
)

描述 [源]

将 pixbuf 保存为格式为 type 的文件。默认情况下,可以保存的文件格式为“jpeg”、“png”、“ico”和“bmp”,但可能已安装更多格式。可以通过以下方式确定所有可写格式的列表:

void add_if_writable (GdkPixbufFormat *data, GSList **list)
{
  if (gdk_pixbuf_format_is_writable (data))
    *list = g_slist_prepend (*list, data);
}

GSList *formats = gdk_pixbuf_get_formats ();
GSList *writable_formats = NULL;
g_slist_foreach (formats, add_if_writable, &writable_formats);
g_slist_free (formats);

如果设置了 error,则返回 FALSE。可能的错误包括 GDK_PIXBUF_ERROR 域中的错误和 G_FILE_ERROR 域中的错误。

变量参数列表应以 NULL 结尾;如果不为空,则应包含修改保存参数的字符串对。例如:

gdk_pixbuf_save (pixbuf, handle, "jpeg", &error, "quality", "100", NULL);

当前只有少数参数存在。

JPEG 图像可以通过“quality”参数保存;其值应在 [0, 100] 范围内。可以通过设置“x-dpi”和“y-dpi”参数为合适的每英寸点数来设置 JPEGPNG 的密度。

可以通过指定“tEXt::key”形式的参数将文本块附加到PNG图像中,其中key是一个长度为1-79的ASCII字符串。值是UTF-8编码的字符串。可以使用“compression”参数指定PNG压缩级别;它的值是一个范围在[0, 9]内的整数。

ICC颜色配置文件也可以嵌入到PNGJPEGTIFF图像中。“icc-profile”的值应该是完整编码到base64的ICC配置文件。

char *contents;
gsize length;

// icm_path is set elsewhere
g_file_get_contents (icm_path, &contents, &length, NULL);

char *contents_encode = g_base64_encode ((const guchar *) contents, length);

gdk_pixbuf_save (pixbuf, handle, "png", &error, "icc-profile", contents_encode, NULL);

TIFF图像支持

  1. 一个“bits-per-sample”选项(整数),可以是1用于保存每样本位数为1的双值CCITTFAX4图像,或8用于保存每样本8位。
  2. 一个“compression”选项(整数),可以是1表示无压缩,2表示Huffman,5表示LZW,7表示JPEG,8表示DEFLATE(参见libtiff文档和tiff.h以获取所有支持的编解码器值)。
  3. 一个“icc-profile”选项(以null结尾的字符串),包含一个base64编码的ICC颜色配置文件。

ICO图像可以保存深度为16、24或32,通过使用“depth”参数。当给定的ICO保存器“x_hot”和“y_hot”参数时,它生成一个CUR而不是ICO

此方法对于语言绑定不是直接可用的。

参数

filename

类型: const char*

要保存的文件名。

数据由方法的调用者拥有。
值是一个平台本机字符串,在Unix上使用首选的OS编码,在Windows上使用UTF-8。
type

类型: const char*

文件格式名称。

数据由方法的调用者拥有。
值是一个以NUL终止的UTF-8字符串。
error

类型: GError

错误返回位置。

该参数可以为NULL
数据由方法的调用者拥有。
...

类型: 

键值保存选项的列表,后跟NULL

返回值

类型: gboolean

TRUE表示成功,否则为FALSE