方法
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”参数为合适的每英寸点数来设置 JPEG 和 PNG 的密度。
可以通过指定“tEXt::key”形式的参数将文本块附加到PNG图像中,其中key是一个长度为1-79的ASCII字符串。值是UTF-8编码的字符串。可以使用“compression”参数指定PNG压缩级别;它的值是一个范围在[0, 9]
内的整数。
ICC颜色配置文件也可以嵌入到PNG、JPEG和TIFF图像中。“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图像支持
- 一个“bits-per-sample”选项(整数),可以是1用于保存每样本位数为1的双值CCITTFAX4图像,或8用于保存每样本8位。
- 一个“compression”选项(整数),可以是1表示无压缩,2表示Huffman,5表示LZW,7表示JPEG,8表示DEFLATE(参见libtiff文档和tiff.h以获取所有支持的编解码器值)。
- 一个“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
。