GTK编程:将图片文件按指定比例显示

实现功能:将指定的图片文件按指定比例在窗体中显示

注意:这段代码没有信号处理的实现,当点击关闭窗体的时候,虽然窗体关闭了,但程序并没有真正退出。

/* File: SizeShow.c
 * Date: Mon Mar 27 15:36:09 HKT 2015
 * Describe: Show the picture with the specified size
 * Autor: won
 */

#include <stdio.h>
#include <gtk/gtk.h>

//指定显示分辨率
#define dest_width 320
#define dest_height 240

void showPic(char *filename)
{
    GtkWidget *window;
    GtkWidget *image;
    const GdkPixbuf *src_pixbuf;
    GdkPixbuf *dest_pixbuf;

    //创建一个新窗口
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    //读取图片参数
    src_pixbuf = gdk_pixbuf_new_from_file(filename, NULL);

    //将src_pixbuf设置成屏幕大小
    dest_pixbuf = gdk_pixbuf_scale_simple(src_pixbuf,
        dest_width, dest_height, GDK_INTERP_HYPER);

    //从dest_pixbuf中读取图片存于image中
    image = gtk_image_new_from_pixbuf(dest_pixbuf);

    //设置窗口大小
    gtk_window_set_default_size(GTK_WINDOW(window), dest_width, dest_height);

    //将图片image加入window容器中
    gtk_container_add(GTK_CONTAINER(window), image);

    //设置窗口边框宽度
    gtk_container_set_border_width(GTK_CONTAINER(window), 0);

    //显示窗口
    gtk_widget_show_all(window);

}

int main(int argc, char *argv[])
{
    gtk_init(&argc, &argv);

    showPic(argv[1]);

    gtk_main();

    return 0;
}

编译:

gcc PicParam.c -o PicParam `pkg-config --cflags --libs gtk+-2.0`

执行结果:

$ ./SizeShow 1.jpg

时间: 2024-12-26 05:43:23

GTK编程:将图片文件按指定比例显示的相关文章

java中图片文件的传输及显示(Socket以及ServerSocket演示)

//客户端部分 package testSix; import java.awt.Graphics; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.util.Iterator; import javax.imageio.ImageIO; impo

修复电脑图片文件图标不显示的方法

最近魅力网络安装了爱奇艺,发现爱奇艺自动安装了个万能播放器,打开图片也是用那个打开的,默认关联了图片文件,后来卸载了爱奇艺,发现图片文件的图标不显示了,看着很是不舒服为此只有手工更改了. 方法如下:我的电脑---文件夹选项---文件类型----点还原---高级---更改图标---搜索%SystemRoot%\system32\shimgvw.dll

node-webkit中保存文件图片时如何指定保存类型

node-webkit中保存文件图片时如何指定保存类型,nw中可以用html的属性donwload属性来下载,最简单但它弹出的下载框可以重命名时把后缀去掉,用户不小心会把文件或图片后缀去掉,导致打不开文件.另外可以用input 的accept属性打开一个<input style="display:none;" id="saveImg" type="file" nwsaveas="imge.png"  accept=&qu

Linux运维之批量下载指定网站的100个图片文件,并找出大于200KB的文件

题目为: 有一百个图片文件,它们的地址都是http://down.fengge.com/img/1.pnghttp://down.fengge.com/img/2.png-一直到http://down.fengge.com/img/100.png批量下载这100个图片文件,并找出其中大于200KB的文件. 这个使用shell脚本实现 #!/bin/bash for i in {1..100} do wget http://down.fengge.com/img/$i.png done find

[深入浅出WP8.1(Runtime)]生成图片和存储生成的图片文件

7.2.3 使用RenderTargetBitmap类生成图片 RenderTargetBitmap类可以将可视化对象转换为位图,也就是说它可以将任意的UIElement以位图的形式呈现.那么我们在实际的编程中通常会利用RenderTargetBitmap类来对UI界面进行截图操作,比如把程序的界面或者某个控件的外观生成一张图片. 使用RenderTargetBitmap类生成图片一般有两种用途,一种是直接把生成的图片在当前的页面上进行展示,还有一种用途是把生成的图片当作文件存储起来,或者通过某

Windows界面编程-背景图片、透明特效使用

Windows界面编程第一篇 位图背景与位图画刷 可以通过WM_CTLCOLORDLG消息来设置对话框的背景,MSDN上对这个消息的说明如下: The WM_CTLCOLORDLG message is sent to a dialog box before the system draws the dialog box. By responding to this message, the dialog box can set its text and background colors us

TCP、UDP练习题 (UDP聊天程序、TCP上传文本文件和图片文件)

TCP.UDP编程练习 TCP ☆上传文本文件 读取一个本地文本文件,将数据发送到服务端,服务器端对数据进行存储. 存储完毕后,给客户端一个提示. 一.解题思路 客户端:(1) 创建Socket对象----用服务器的ip+端口号 (2)读取文件内容 (3)通过socket把内容发送给服务器端(把socket中的输出流包装成"打印流"来进行发送文本,是一种比较安全的输出方式,不会出现失真.) 服务器端:(1) 创建服务器socket---ServerSocket (2)通过ServerS

Apache日志不记录图片文件设置方法和来源日志的配置

Apache日志不记录图片文件设置方法 <FilesMatch "\.(ico|gif|jpg|swf)">SetEnv IMAG 1</FilesMatch>CustomLog logs/access_log combined env=!IMAG Apache日志,如果记录所有访问请求,文件会很大:如果使用日志分析软件,分析结果不一定准确.而且如果不安装cronolog工具来截断日志,会在一个整文件中,这样访问量一高,日志文件所占空间是可观的. 通过在http

C#:将图片文件上传到数据库两种方法。

方法1: 将图片复制到指定文件夹,在数据库中存储图片路径,通过读取路径来显示图片. string str; private void toolStripButton1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { str = openFileDialog1.FileName; pictureBox1.Image = Image.FromFile(str); }