是否有可能呈现的网络内容通过一个清楚的背景。?
-
11-07-2019 - |
题
我试图表的可能性的一个补给。这将使所有呈现的图形呈现到完全透明的背景。
期望的效果是使网页内容没有任何背景在所有,它应该出现浮动在桌面(或无论是显示在后面的浏览器窗口)。
有人看到一个应用程序这样做?(我可以想到一些终端模拟器,可。) 如果任何人有工作了内部的(或者可能只壁虎?) 你认为这是可能做到这一点?
更新: 我已经认识到,Mac OS x仪表板的部件使用这种技术。因此,这必须是可能的。
更新2: 我已经编制了其在linux和注意的配置的选择包括:
--enable-dashboard-support
enable Dashboard support default=yes
我越来越近。任何人都可以帮忙吗?
更新3: 我继续找到参考这个员额在各种相关邮件列表。
解决方案
解决了!
通过正在进行的研究,淘论坛和源码存储库,我peiced在一起的必要步骤来完成这一使用仅libwebkit和标准,它桌面(任何你的桌面上的合成应该做)。
对于当前libwebkit(1.1.10-SVN)中,有一个Ubuntu PPA:
deb http://ppa.launchpad.net/webkit-team/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/webkit-team/ppa/ubuntu jaunty main
尽代码的推移,关键是呼叫 webkit_web_view_set_transparent
.
当然系统在运行,它就应该有一个能够显卡(英特尔,能的,或者选)和运行的一个合成窗口管理(喜欢它).
最后,实际上看到的透明度,内容是视必须设置一个透明的背景,使用CSS3,否则它仍然是完全不透明的。
它是那么简单:
BODY { background-color: rgba(0,0,0,0); }
这里是全部抽样的简单的可能。浏览器应用程序,有透明度的支持:
#include <gtk/gtk.h>
#include <webkit/webkit.h>
static void destroy_cb(GtkWidget* widget, gpointer data) {
gtk_main_quit();
}
int main(int argc, char* argv[]) {
gtk_init(&argc, &argv);
if(!g_thread_supported())
g_thread_init(NULL);
// Create a Window, set colormap to RGBA
GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GdkScreen *screen = gtk_widget_get_screen(window);
GdkColormap *rgba = gdk_screen_get_rgba_colormap (screen);
if (rgba && gdk_screen_is_composited (screen)) {
gtk_widget_set_default_colormap(rgba);
gtk_widget_set_colormap(GTK_WIDGET(window), rgba);
}
gtk_window_set_default_size(GTK_WINDOW(window), 800, 800);
g_signal_connect(window, "destroy", G_CALLBACK(destroy_cb), NULL);
// Optional: for dashboard style borderless windows
gtk_window_set_decorated(GTK_WINDOW(window), FALSE);
// Create a WebView, set it transparent, add it to the window
WebKitWebView* web_view = web_view = WEBKIT_WEB_VIEW(webkit_web_view_new());
webkit_web_view_set_transparent(web_view, TRUE);
gtk_container_add (GTK_CONTAINER(window), GTK_WIDGET(web_view));
// Load a default page
webkit_web_view_load_uri(web_view, "http://stackoverflow.com/");
// Show it and continue running until the window closes
gtk_widget_grab_focus(GTK_WIDGET(web_view));
gtk_widget_show_all(window);
gtk_main();
return 0;
}
其他提示
回在Safari1.3和2,有一个隐藏的调试的菜单(援引通过终端: defaults write com.apple.Safari IncludeDebugMenu 1
),其中包括"使用的透明窗口"选项。
- http://www.macosxhints.com/article.php?story=20050418015445258
- http://www.wiredatom.com/blog/2005/10/20/safari-transparency/
不知道,如果这是一个其事或野生动物园的事情。
(在Safari3、调试菜单似乎已经取代"发展"的菜单(启用偏好>高级)不具有透明窗口选择。)
基本上你想要设置将斜角色的空间以发送到窗口的管理。显然唯一窗口的管理人员,支持成将能够利用这一优势。
你可能想谈谈的screenlet和它开发人员,他们应该能够帮助更多。
这一要点对我的作品,作为2013年,测试只有ubuntu:
我有一个新的解决方案,这是真的很容易做到的,对于一个单一的截图。它的使用node.js 与phantom.js 图书馆。
- 安装node.js
- 运行'npm install-g phantomjs'在控制台/终端
保存如下script.js 并运行它从控制台'phantomjs script.js'
var page = require('webpage').create(); page.viewportSize = { width: 1920, height: 1500 }; page.open("http://www.theWebYouWantToRender"); page.onLoadFinished = function(status) { page.evaluate(function() { document.body.style.background = 'transparent'; }); page.render('render.png'); phantom.exit(); };
- 利润?:)享受