专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Screenshot to Code:把设计图直接转成代码

ins518 2025-05-25 13:05:44 技术文章 1 ℃ 0 评论

AI 的不断进化给代码开发带来了革命性的效率提升,同时大大降低了编程开发的门槛。

给出一张设计图,甚至只是一张网站的截图,就能一键生成对应的前端代码,这在以前是仿佛天方夜谭一般。但如今在 AI 大模型的加持下,这一切都有可能成为现实。

Screenshot-to-Code 项目借助 LLM 的强大能力,为人们提供了一种前端开发的全新可能。


简介

Screenshot-to-Code 是一个能够将截图、线框图以及 Figma 设计转换为可用代码的工具,代码仓库位于
https://github.com/abi/screenshot-to-code。该项目支持 Claude Sonnet 3.5、
GPT-4o、Gemini 2.0 Flash 等模型,并利用 DALL-E 3 或 Flux Schnell 进行图像生成。

Screenshot-to-Code 涵盖了多种前端技术栈,包括 HTML + Tailwind、HTML + CSS、React + Tailwind、Vue + Tailwind、Bootstrap、Ionic + Tailwind 以及 SVG 等。此外,该项目还增加了对视频 / 屏幕录制转换为功能原型的实验性功能的支持,为开发者提供了更多的可能性。


使用

Screenshot-to-Code 可以在本地运行,应用由一个 React/Vite 的前端和一个 FastAPI 后端组成。运行应用需要 API Key,可以提供能访问 GPT-4 的 OpenAI 的 API Key。对于使用 Ollama 开源模型的,也可以改变环境变量来实现,把以下命令加入到 backend/.env 中:

export OPENAI_BASE_URL="http://localhost:11434/v1"
export OPENAI_API_KEY=fake-key

然后创建模型的别名给 Screenshot-to-Code 使用:

for model in \
   claude-3-5-sonnet-20240620 \
   gpt-4o-2024-05-13 \
   gpt-4-turbo-2024-04-09 \
   gpt_4_vision \
   claude_3_sonnet; do
   ollama cp x/llama3.2-vision $model
done

可以把 x/llama3.2-vision 修改为任意的本地模型使用。


配置 Key 或模型后,运行后端。后端是 Python 的 FastAPI,可以使用 poetry 进行启动:

cd backend
echo "OPENAI_API_KEY=sk-your-key" > .env
echo "ANTHROPIC_API_KEY=your-key" > .env
poetry install
poetry shell
poetry run uvicorn main:app --reload --port 7001

后端运行起来后,再运行前端,使用 yarn:

cd frontend
yarn
yarn dev

前后端都运行起来后,在浏览器访问 http://localhost:5173,就能使用该工具了。

如果需要进行 Debug,则可以使用 mock 模式了避免对 GPT 模型的调用:

MOCK=true poetry run uvicorn main:app --reload --port 7001

如果想要更为独立的部署,也可以使用 Docker:

echo "OPENAI_API_KEY=sk-your-key" > .env
docker-compose up -d --build


工具使用简单,只需上传一张网站的截图,或者录制一段网页的使用视频,然后选择所需的前端技术栈,以及使用的 LLM 模型,点击 “Generate”,稍等片刻,就能产出所需的前端代码,能几乎完美复刻原有的网页。


总结

Screenshot-to-Code 项目为前端开发提供了一种高效、便捷的代码生成方式,大大减少了开发者手动编写代码的工作量,更为没有太多前端开发经验的人们大大降低了开发门槛,使网页开发变得不再遥不可及。

Screenshot-to-Code 不仅适用于个人开发者快速实现原型,也适用于企业团队提高开发效率。在未来,随着 AI 技术的不断发展,Screenshot-to-Code 有望在更多领域得到应用,为网页前端开发带来更多的便利和创新。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表