找不到Imagemagick的display
命令选项以避免装饰。只需要显示图像,有没有办法实现这一点,或任何其他“核心”命令可以做到这一点?
答案 0 :(得分:2)
我假设您的意思是显示没有窗口装饰的图像。有很多方法可以实现这一目标,但我想指出您的操作系统/桌面管理员可能有一些可以利用的东西。
例如,在我的Mac上,我可以使用open
& qlmanage
以最小的装饰显示图像。
# Use OS defaults
open wizard.png
# or Quicklook
qlmanage -p wizard.png
YMMV。列出了to this question列出了很多替代品。
ImageMagick的display
实用程序包含选项-immutable
,-backdrop
和& -window
选项与X11显示系统交互。如果你不介意X11的标语栏,那么-immutable
将隐藏其他显示小部件。
display -immutable -resize 40% wizard.png
但是,如果您绝对不想要任何窗口装饰,那么您可能需要为自己的解决方案提供角色。 -window
选项会将图像设置为正在运行的窗口的背景。知道这一点,我只需要创建一个无边框窗口&捕获ID以传递给identify
。请参阅this answer以创建没有任何装饰的窗口。
// simple_window (compile with `gcc -L/usr/X11R6/lib -lX11 -o simple_window simple_window.c')
#include <stdio.h>
#include <X11/Xlib.h>
int main(int argc, const char * argv[]) {
Display * root;
Window win;
int screen;
root = XOpenDisplay(NULL);
screen = DefaultScreen(root);
win = XCreateSimpleWindow(root,
RootWindow(root, screen),
10, 10,
400, 600,
0,
BlackPixel(root, screen),
WhitePixel(root, screen));
Atom win_type = XInternAtom(root, "_NET_WM_WINDOW_TYPE", False);
long value = XInternAtom(root, "_NET_WM_WINDOW_TYPE_DOCK", False);
XChangeProperty(root,
win,
win_type,
4, 32,
PropModeReplace,
(unsigned char *) &value, 1);
XMapWindow(root, win);
printf("Window created %lu\n", win);
XEvent e;
while(1) {
XNextEvent(root, &e);
if (e.type == KeyPress) {
break;
}
}
XCloseDisplay(root);
return 0;
}
编制上述程序&amp; running将打印出当前窗口id;其中,我现在可以通过import
实用程序将图像作为背景写入。
有点黑客,但是,YMMV。