Data Fabric 如何在不搬运数据的情况下统一访问数据
2026/6/16 9:38:57
Nano Banana是Google Gemini系列的原生多模态图像生成与编辑模型,正式名称为Gemini 2.5 Flash Image,8月26日2025公开上线,代号因社群传播而广为人知。核心优势是角色一致性、多图融合、自然语言精准编辑,主打快速迭代与商业可用,可用于设计、营销、内容创作等场景。
nananobanana
Nano Banana APi接入
电商产品主图,无线耳机,极简白背景,800x800像素,高清质感。将图中人物的红色外套换成黑色,背景改为办公室场景。constgenerateImage=async(prompt)=>{constapiKey='YOUR_GEMINI_API_KEY';constres=awaitfetch(`https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image:generateContent?key=${apiKey}`,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({contents:[{parts:[{text:prompt}]}],generationConfig:{height:800,width:800}})});constdata=awaitres.json();returndata.images[0].url;// 返回生成图URL};// 使用:generateImage('前端营销页banner,科技感,蓝色调,1920x600')下面这份Nano Banana前端集成最佳实践清单,涵盖提示词模板、API错误处理代码、成本优化方案,可直接适配前端开发场景快速落地:
不同前端场景的提示词需明确尺寸、风格和核心需求,以下模板可直接微调使用:
| 应用场景 | 提示词模板 | 适配场景 |
|---|---|---|
| 营销页Banner | 前端营销页Banner,科技感蓝色调,内容为无线耳机,背景带轻微粒子动画,1920x600像素,高清无噪点,适合网页加载 | 产品推广页、活动专题页首屏 |
| UI占位图 | 极简风格按钮图标,圆角8px,纯色绿色,尺寸48x48像素,无文字,适配移动端UI占位,边缘无锯齿 | 前端开发初期UI原型搭建 |
| 角色系列图 | 基于当前人物形象,生成3种不同姿势,分别为站立、坐姿、挥手,保持服装和发型完全一致,背景为白色,800x1000像素 | 会员体系页、IP主题页面 |
| 老照片修复 | 修复图中划痕和褪色,为黑白照片上色,保持人物面部细节真实,输出尺寸1080x1080像素,适合复古主题网页展示 | 历史主题页、品牌故事页 |
| 多图融合 | 融合职场人物图与南京地标紫峰大厦,调整光影统一为晴天午后,人物位于画面左侧,比例协调,1200x800像素 | 地域化营销页、本地活动页 |
包含基础调用、超时重试、降级处理等核心逻辑,适配Vue/React等前端框架
import{GoogleGenerativeAI}from"@google/genai";// 初始化客户端constgenAI=newGoogleGenerativeAI("YOUR_GEMINI_API_KEY");constmodel=genAI.getGenerativeModel({model:"gemini-2.5-flash-image-preview"});// 文生图核心函数exportasyncfunctiongenerateBanner(prompt){try{constresult=awaitmodel.generateContent([{text:prompt},{generationConfig:{width:1920,height:600,quality:"high"}}]);// 提取图像URL并返回constimageData=result.response.candidates[0].content.parts.find(part=>part.inlineData);returnimageData.inlineData.data;}catch(error){handleApiError(error);returnnull;}}// 错误分类处理functionhandleApiError(error){consterrorMap={401:"API密钥无效,请重新配置",403:"无调用权限,检查结算账户是否开通",429:"调用频率超限,已触发限流",500:"服务端错误,稍后重试"};// 输出对应错误信息consterrorMsg=errorMap[error.code]||`调用失败:${error.message}`;console.error("Nano Banana API错误:",errorMsg);// 前端提示用户alert("图像加载失败,请刷新页面重试~");}// 带重试机制的请求封装exportasyncfunctionrequestWithRetry(fn,retryTimes=2){letattempt=0;while(attempt<retryTimes){try{returnawaitfn();}catch(error){attempt++;if(attempt>=retryTimes)throwerror;// 重试间隔2秒,避免频繁请求awaitnewPromise(resolve=>setTimeout(resolve,2000));}}}exportasyncfunctiongetBannerImage(prompt){constimage=awaitrequestWithRetry(()=>generateBanner(prompt));// 降级返回默认图returnimage||"/static/default-banner.png";}quality: "medium",平衡效果与成本,避免不必要的高清渲染。localStorage缓存高频使用的图像(如固定Banner、通用图标),设置7天缓存期,代码示例:exportasyncfunctiongetCachedImage(prompt){constcacheKey=`nano_${prompt}`;constcached=localStorage.getItem(cacheKey);if(cached)returncached;constimage=awaitgetBannerImage(prompt);localStorage.setItem(cacheKey,image);returnimage;}