一璞 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
“這次的新產品首頁,大家有什么想法?”你正在和UI、前端、市場、運營部門開會。
“先把活動banner放到最上面?”
“然后給不同欄目加icon,放兩排就夠了。”
“下面可以放專欄的位置?!?/p>
“最底下別忘了加用戶菜單。”
……
你一邊聽著同事們七嘴八舌的建議,一邊就把原型圖在白板上畫了出來:“我們按這個來討論一下吧,時間不等人,后面還要UI設計、前端開發……”
“差不多長這樣是吧?”前端開發小丁打斷了你的發言。
小丁的電腦上,正按照你說的樣子,運行著一個頁面,每一處banner、按鈕、跳轉都可以點擊,所有文字、圖片都放在了它應該出現的地方,一旁的HTML代碼簡潔清晰,就像產品已經做出來了一樣。
這么快,怎么做到的?
難道,這群開發人員都是AI嗎?
嗯……可能真的是。
小丁用的方法,是攝像頭實時拍攝白板上的草稿,就可以自動生成設計、開發好了的網頁。
視頻中,產品經理在白板上勾勒原型草圖。
而屏幕上,顯示著識別的過程,同時正在生成代碼和UI界面預覽。
放大的細節清晰地展示出了識別的過程。
隨著畫圖的那位產品經理停筆,識別也就完成了,此時的代碼清晰可鑒。
網頁也生成了,和正常的網頁一樣,可以隨意調整大小并適配。
整個過程中,電腦借助攝像頭拍攝到產品經理正在白板上繪制的原型草稿,一邊就即時“畫”出了UI,生成了代碼,展示著成品網頁。
產品經理畫一個banner,屏幕上就出現一個banner;
產品經理標一個小標題,屏幕上就出現一個小標題;
產品經理畫一個文字區域,屏幕上就出現一個文字區域。
每一步都是機器自動識別產品經理畫出來的東西,直接變成相應的網頁樣式,還附帶了HTML代碼。進行任何增刪,都可以實時跟進、更新。
此前,確定一個網頁長什么樣子,要產品經理、UI、前端、市場運營們聚在一起,溝通、討論、扯皮,出N個方案,開N場會議,花費數天乃至數周才能完成。
從分析需求開始,產品經理出原型圖,大家開會修改×N;
UI繪制設計圖,大家開會修改×N;
前端寫好代碼,大家檢查溝通×N……
不僅如此,有些人想象力捉急,看不到最終的成品,就發現不了問題,還要讓產品、UI、前端重新來一次,一再返工。
于是,工期越推越長,加班越來越晚,發際線越來越高……
現在,有了這個工具,大家只要在白板上勾勾畫畫,就可以立馬看到成品長什么樣,敲定方案,一次成型,還可以直接拿去改進UI和代碼,給設計師和前端開發省了不少功夫,能把一兩個星期的工作,壓縮到一兩天,效率提升N倍。
這個草稿生成網頁的視頻在LinkedIn和Twitter上瘋傳,視頻中的那個神奇的工具到底是什么呢?
這個工具出自一個名為teleportHQ的項目,由Evo Forge和Corebuild兩家歐洲公司合作創立,歐洲區域發展基金(European Fund for Regional Development)出資贊助,他們希望這個項目能讓非技術人員也能方便的創建可視化的應用程序和web頁面。
該項目通過支持向量機(SVM)、神經網絡和XGBoost三種方式,實現對web頁面的語義分割,目前已經可以生成React,React Native,Vue,HTML/CSS和AngularJS代碼。
雖然正式的產品還沒有面世,不過一眾Twitter網友都驚呆了,他們看到這個視頻的反應是這樣:
這樣:
還有這樣:
網友們紛紛表示,這簡直是未來本來了!
有時候我會覺得看到了未來,嗯,比如看到這個的時候。
雖然感覺UI們會涼涼,但是并不妨礙這個很cool啊!
但另一些設計師覺得,這能給自己省下大把大把的時間。
還有人暢想了這種技術的未來應用。
等到了2025年,所有的演講估計都會是演講者手繪,然后AI來自動生成的啦。
不過也有人覺得,實時同步雖然很牛逼,但是,仿佛無卵用。
毫無疑問,視頻很棒,但是視頻里最厲害實時轉換的恰恰是最沒用的,我們為什么需要每一步都實時轉化成代碼?
看了這個炫酷的效果,你是不是也想在自家的腦暴大會上用上它?
不過,目前這個teleportHQ還沒開發完。從2017年8月16日開始,這個項目有24個月的時間來完成作業。也就是說,如果那兩家歐洲公司給力的話,大概明年夏天就可以用了。
好在別家也出過不少類似的產品,找個開源的試一試,隔壁家的UI都被你嚇哭了。
微軟Sketch2Code
今年夏天,微軟就開源了一個名為Sketch2Code的項目,可以把用戶上傳的界面手繪圖轉化為HTML頁面。
大致的步驟是這樣的:
· 用戶把自己畫的手繪草稿拍照上傳?!?視覺模型檢測在圖像中出現的HTML部件,標記出他們的位置?!?識別所有部件中的手寫文本?!?布局算法根據各部件的邊框空間信息生成網格結構。· HTML 生成引擎使用上述信息來生成 HTML 代碼。
整個過程運用了微軟自定義視覺模型、微軟計算機視覺服務以及Azure的一系列服務,將他們串聯在了一起。
Uizard家的pix2code
丹麥的Uizard Technologies公司曾經發過一篇論文,介紹了他們訓練的pix2code模型,能夠識別UI部件,并生成效果圖。
這個模型的訓練大概需要三步:
首先,需要通過計算機視覺技術來識別場景(屏幕截圖)和UI組件(按鈕,文本區域等);
其次,需要讓這個模型學會前端代碼,生成語法和語義正確的代碼樣本;
最后,重復前兩個步驟進行訓練。
演示效果大概是這樣:
pix2code已經產品化,產品名字和他們公司名字一樣,叫做Uizard。目前看來效果也相當不錯了,根據視頻的演示,不僅可以通過手機掃描直接生成UI效果圖,還可以直接導入UI設計軟件中進行修改。
Airbnb
Airbnb內部就有一個項目可以實現將手繪的網頁部件直接轉化為成品。
他們認為,像漢字這種幾千個復雜的手寫符號都可以通過機器識別,那么一百多種網頁UI常用部件拿來識別會是更容易的。
于是,他們用十幾個UI部件訓練了一個原型,可以將白板上的草圖自動生成原型代碼和設計文件。
△ 左邊是生成的效果
這項技術已經用在了Airbnb產品的開發設計中。
teleportHQ
https://teleporthq.io/
(包含兩篇技術博客)
微軟的Sketch2Code
https://github.com/Microsoft/ailab/tree/master/Sketch2Code
pix2code: 從GUI截圖生成代碼
作者:Tony Beltramelli,UIzard Technologies,丹麥
論文:https://arxiv.org/abs/1705.07962
github:https://github.com/tonybeltramelli/pix2code
網站:https://uizard.io/research/#pix2code
另一作者改進的開源項目:https://github.com/ashnkumar/sketch-code
Airbnb的Sketching Interfaces
https://airbnb.design/sketching-interfaces/
— 完 —
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復“招聘”兩個字。
量子位 QbitAI · 頭條號簽約作者
?'?' ? 追蹤AI技術和產品新動態
TML(超文本標記語言)是一種Web語言,用于構建在Web瀏覽器中顯示的文檔(或網站),而PDF格式廣泛用于通過Internet與他人保存和傳輸信息,那再Win11系統上如何將HTML文件批量轉換為PDF呢?下面我們就來看看。
更多系統教程參考小白重裝系統網
使用IceCream PDF 轉換器
作為第一步,您需要前往IceCream 的官方下載頁面并選擇免費下載選項。
繼續安裝步驟,選擇要顯示的語言,然后等待該過程完成。
單擊主菜單中的To PDF選項可將文件轉換為 PDF。
現在單擊添加文件按鈕并選擇所需的文檔。
如果您還希望合并文檔,請單擊將所有文檔合并為一個 PDF選項,然后單擊轉換。否則只需點擊Convert。
文件轉換完成后,系統會提示您打開新創建的文件夾的按鈕。單擊它以查看 PDF 文件。
如何裝win11?看這里,直接安裝無需顧慮微軟推送的升級限制
當今互聯網時代,HTML 和 Markdown 都是非常流行的標記語言。HTML 用于構建網頁結構和內容,而 Markdown 則以其簡潔易讀的語法被廣泛用于編寫文檔、博客文章等。在很多場景下,我們需要將 HTML 內容轉換為 Markdown 格式,例如網頁內容抓取、文檔格式轉換等。
Rust 作為一門以安全、性能和可靠性著稱的系統級編程語言,也提供了相應的庫來處理 HTML 到 Markdown 的轉換。本文將介紹一個名為 htmd 的 Rust 庫,它提供了一種高效且易于使用的方式來完成這項任務。
htmd 是一個受 JavaScript 庫 turndown.js 啟發而開發的 Rust 庫,用于將 HTML 文檔轉換為 Markdown 格式。它具有以下特點:
在使用 htmd 之前,我們需要先安裝它。將以下依賴項添加到你的 Cargo.toml 文件中:
[dependencies]
htmd = "0.1"
基本轉換
使用 htmd 進行 HTML 到 Markdown 的基本轉換非常簡單。以下代碼展示了如何將一個 <h1> 標簽轉換為 Markdown 中的 # 標題:
use htmd::HtmlToMarkdown;
fn main() {
let markdown = HtmlToMarkdown::new();
let html = "<h1>這是一個標題</h1>";
let result = markdown.convert(html).unwrap();
assert_eq!(result, "# 這是一個標題\n");
}
跳過標簽
在某些情況下,我們可能希望跳過 HTML 文檔中的某些標簽,例如 <script> 和 <style> 標簽。htmd 提供了 skip_tags 方法來實現這一點:
use htmd::HtmlToMarkdown;
fn main() {
let markdown = HtmlToMarkdown::builder()
.skip_tags(vec!["script", "style"])
.build();
let html = r#"
<script>
// 一些 JavaScript 代碼
</script>
<h1>這是一個標題</h1>
"#;
let result = markdown.convert(html).unwrap();
assert_eq!(result, "# 這是一個標題\n");
}
自定義標簽處理器
htmd 允許我們自定義標簽處理器來處理特定的 HTML 標簽。例如,我們可以定義一個處理器將 <img> 標簽轉換為 Markdown 中的圖片語法:
use htmd::{HtmlToMarkdown, HandleResult};
use html5ever::tendril::StrTendril;
use html5ever::QualName;
fn main() {
let markdown = HtmlToMarkdown::builder()
.add_handler(
vec!["img"],
|el| {
let src = el
.attrs
.iter()
.find(|(name, _)| name.local.as_ref() == "src")
.map(|(_, value)| value.as_ref());
let alt = el
.attrs
.iter()
.find(|(name, _)| name.local.as_ref() == "alt")
.map(|(_, value)| value.as_ref());
match (src, alt) {
(Some(src), Some(alt)) => Some(format!("", alt, src)),
_ => None,
}
},
)
.build();
let html = r#"<img src="https://example.com/image.jpg" alt="圖片描述">"#;
let result = markdown.convert(html).unwrap();
assert_eq!(result, "\n");
}
多線程處理
htmd 支持多線程處理,可以充分利用多核 CPU 的性能來加速轉換過程。以下代碼展示了如何使用多線程將多個 HTML 文檔轉換為 Markdown:
use htmd::HtmlToMarkdown;
use std::sync::Arc;
use std::thread;
fn main() {
let markdown = Arc::new(HtmlToMarkdown::new());
let html_docs = vec![
"<h1>文檔 1</h1>",
"<h2>文檔 2</h2>",
"<h3>文檔 3</h3>",
];
let threads: Vec<_> = html_docs
.into_iter()
.map(|html| {
let markdown = markdown.clone();
thread::spawn(move || {
let result = markdown.convert(html).unwrap();
println!("{}", result);
})
})
.collect();
for thread in threads {
thread.join().unwrap();
}
}
htmd 是一個功能強大且易于使用的 Rust 庫,用于將 HTML 文檔轉換為 Markdown 格式。它提供了豐富的選項、自定義標簽處理器和多線程支持,可以滿足各種轉換需求。如果你正在尋找一種高效可靠的 HTML 到 Markdown 轉換解決方案,htmd 絕對值得一試。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。