Imagemagick 如何显示没有装饰的图像

Imagemagick 如何显示没有装饰的图像,imagemagick,Imagemagick,找不到Imagemagick的display命令的选项以避免装饰。只需要显示图像,有什么方法可以实现这一点,或者有任何其他“核心”命令可以做到吗?我假设您的意思是显示没有窗口装饰的图像。有很多方法可以实现这一点,但我想指出,您的OS/桌面管理器可能有一些您可以利用的功能 例如,在我的mac电脑上,我可以使用open和qlmanager以最少的装饰来显示图像 #使用操作系统默认值 打开wizard.png #还是快看 qlmanager-p wizard.png YMMV。这里还列出了一些不错

找不到Imagemagick的
display
命令的选项以避免装饰。只需要显示图像,有什么方法可以实现这一点,或者有任何其他“核心”命令可以做到吗?

我假设您的意思是显示没有窗口装饰的图像。有很多方法可以实现这一点,但我想指出,您的OS/桌面管理器可能有一些您可以利用的功能

例如,在我的mac电脑上,我可以使用
open
qlmanager
以最少的装饰来显示图像

#使用操作系统默认值
打开wizard.png
#还是快看
qlmanager-p wizard.png

YMMV。这里还列出了一些不错的选择

ImageMagick的
显示
实用程序具有与X11显示系统交互的选项
-不可变
-背景
,&
-窗口
。如果您不介意X11的平铺条,那么
-immutable
将隐藏其他显示小部件

display -immutable -resize 40% wizard.png

然而,如果你绝对不想要任何窗户装饰,那么你可能需要自己的解决方案。
-window
选项将图像设置为运行窗口的背景。知道了这一点,我只需要创建一个无边界窗口&捕获一个ID以传递给
identify
。有关创建不带任何装饰的窗的信息,请参见

//simple\u window(使用`gcc-L/usr/X11R6/lib-lX11-o simple\u window simple\u window.c'编译)
#包括
#包括
int main(int argc,const char*argv[]{
显示*根;
窗口赢;
int屏幕;
root=XOpenDisplay(NULL);
屏幕=默认屏幕(根);
win=XCreateSimpleWindow(根目录,
根窗口(根、屏幕),
10, 10,
400, 600,
0,
黑色像素(根、屏幕),
白像素(根、屏幕);
Atom win\u type=XInternAtom(根“\u NET\u WM\u WINDOW\u type”,False);
长值=XInternAtom(根“\u NET\u WM\u WINDOW\u TYPE\u DOCK”,False);
XChangeProperty(根,
赢
win_类型,
4, 32,
ProPlace,
(无符号字符*)&值,1);
XMapWindow(root,win);
printf(“窗口创建%lu\n”,win);
XEvent e;
而(1){
XNextEvent(根和e);
如果(e.type==按键){
打破
}
}
XCloseDisplay(根);
返回0;
}
编译上述程序并运行将打印出当前窗口id;现在,我可以通过
import
实用程序将图像作为背景写入


有点老套,但再一次,YMMV。

我想你的意思是显示没有窗户装饰的图像。有很多方法可以实现这一点,但我想指出,您的OS/桌面管理器可能有一些您可以利用的功能

例如,在我的mac电脑上,我可以使用
open
qlmanager
以最少的装饰来显示图像

#使用操作系统默认值
打开wizard.png
#还是快看
qlmanager-p wizard.png

YMMV。这里还列出了一些不错的选择

ImageMagick的
显示
实用程序具有与X11显示系统交互的选项
-不可变
-背景
,&
-窗口
。如果您不介意X11的平铺条,那么
-immutable
将隐藏其他显示小部件

display -immutable -resize 40% wizard.png

然而,如果你绝对不想要任何窗户装饰,那么你可能需要自己的解决方案。
-window
选项将图像设置为运行窗口的背景。知道了这一点,我只需要创建一个无边界窗口&捕获一个ID以传递给
identify
。有关创建不带任何装饰的窗的信息,请参见

//simple\u window(使用`gcc-L/usr/X11R6/lib-lX11-o simple\u window simple\u window.c'编译)
#包括
#包括
int main(int argc,const char*argv[]{
显示*根;
窗口赢;
int屏幕;
root=XOpenDisplay(NULL);
屏幕=默认屏幕(根);
win=XCreateSimpleWindow(根目录,
根窗口(根、屏幕),
10, 10,
400, 600,
0,
黑色像素(根、屏幕),
白像素(根、屏幕);
Atom win\u type=XInternAtom(根“\u NET\u WM\u WINDOW\u type”,False);
长值=XInternAtom(根“\u NET\u WM\u WINDOW\u TYPE\u DOCK”,False);
XChangeProperty(根,
赢
win_类型,
4, 32,
ProPlace,
(无符号字符*)&值,1);
XMapWindow(root,win);
printf(“窗口创建%lu\n”,win);
XEvent e;
而(1){
XNextEvent(根和e);
如果(e.type==按键){
打破
}
}
XCloseDisplay(根);
返回0;
}
编译上述程序并运行将打印出当前窗口id;现在,我可以通过
import
实用程序将图像作为背景写入


有点像黑客,但同样,YMMV。

简直太棒了!很好的回答-效果很好。我需要将
-I/opt/X11/include
添加到使用XQuartz的iMac上的编译命令中。顺便说一句,简直太棒了!很好的回答-效果很好。我需要将
-I/opt/X11/include
添加到使用XQuartz的iMac上的编译命令中。