![如何从命令行将图像文件转换为 .edj 格式?](https://linux22.com/image/75284/%E5%A6%82%E4%BD%95%E4%BB%8E%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B0%86%E5%9B%BE%E5%83%8F%E6%96%87%E4%BB%B6%E8%BD%AC%E6%8D%A2%E4%B8%BA%20.edj%20%E6%A0%BC%E5%BC%8F%EF%BC%9F.png)
我最近在我的 Sabayon Linux 机器上安装了 E17 分支 Moksha,问题是用于将壁纸更改为 JPG 或 PNG 文件的图形工具让我感到悲伤(是的,我已经尝试从 Bodhi Linux 获得对此的支持)社区,参见这个论坛帖子),但我似乎可以很容易地使用 .edj 格式的壁纸(包括动画壁纸)。所以我希望有人能有一个 shell 脚本(对于我来说足够简单,可以使用)或者我可以从命令行运行的东西,将我的 JPG 和 PNG 壁纸转换为 .edj 文件格式。
答案1
我将为您提供执行此操作的各种代码的摘录。此版本的代码仅嵌入图像的路径,而不是将图像也包含在 edj 文件中。
OUTPUT_DIR="$HOME/.e/e/backgrounds"
TEMPLATE='
images { image: "@IMAGE@" USER; }
collections {
group {
name: "e/desktop/background";
data { item: "style" "4"; item: "noanimation" "1"; }
max: @WIDTH@ @HEIGHT@;
parts {
part {
name: "bg";
mouse_events: 0;
description {
state: "default" 0.0;
aspect: @ASPECT@ @ASPECT@;
aspect_preference: NONE;
image { normal: "@IMAGE@"; scale_hint: STATIC; }
}
}
}
}
}
'
OFILE="$OUTPUT_DIR/variety_wallpaper_$RANDOM"
DIMENSION="$(identify -format "%w/%h" "$WP")"
if [ ! -z "$DIMENSION" ]; then
WIDTH=$(echo $DIMENSION | cut -d/ -f1)
HEIGHT=$(echo $DIMENSION | cut -d/ -f2)
IMAGE="$(echo "$WP" | sed 's/[^[:alnum:]_-]/\\&/g')"
if [ -z "$HEIGHT" -o "$HEIGHT" = "0" ]; then
ASPECT="0.0"
else
ASPECT=$(echo "scale=9; $DIMENSION" | bc)
fi
fi
printf "%s" "$TEMPLATE" | \
sed "s/@ASPECT@/$ASPECT/g; s/@WIDTH@/$WIDTH/g; s/@HEIGHT@/$HEIGHT/g; s|@IMAGE@|$IMAGE|g" > "$OFILE.edc"
edje_cc "$OFILE.edc" "$OFILE.edj" 2>/dev/null
rm "$OFILE.edc"
完整来源是http://bazaar.launchpad.net/~peterlevi/variety/trunk/view/head:/data/scripts/set_wallpaper
如果你想嵌入图像,你可以执行以下操作,我通过启发 UI 创建壁纸并使用 edje_decc 反编译它来得到这个
images { image: "1920x1080.png" LOSSY 90; }
collections {
group { name: "e/desktop/background";
data { item: "style" "4"; }
data.item: "noanimation" "1";
parts {
part { name: "bg"; mouse_events: 0;
description { state: "default" 0.0;
aspect: 1.777777778 1.777777778; aspect_preference: NONE;
image { normal: "1920x1080.png"; scale_hint: STATIC; }
}
}
}
}
}
然后,您将构建主题,edje_cc -id . -fd . e_bgdlg_new.edc -o 1920x1080.edj
假设上述内容在文件中e_bgdlg_new.edc
,并且您的图像与调用脚本的目录位于同一目录中