yaoqifa commited on
Commit
43d76f4
·
verified ·
1 Parent(s): 8c01369

Upload index.html

Browse files
Files changed (1) hide show
  1. static/index.html +12 -24
static/index.html CHANGED
@@ -5,7 +5,6 @@
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>Nano Banana Generator</title>
7
  <style>
8
- /* ... (保持原有样式不变) ... */
9
  :root {
10
  --bg-color: #0b0f19;
11
  --card-color: #1a1f2e;
@@ -54,7 +53,7 @@
54
  outline: none;
55
  border-color: var(--accent-color);
56
  }
57
-
58
  /* --- 新增样式:图生图上传预览 --- */
59
  .file-upload-wrapper {
60
  position: relative;
@@ -77,7 +76,7 @@
77
  .upload-placeholder { color: #a0aec0; pointer-events: none; }
78
 
79
  .preview-container {
80
- display: none; /* 默认隐藏 */
81
  margin-top: 10px;
82
  position: relative;
83
  width: fit-content;
@@ -105,7 +104,7 @@
105
  padding: 0;
106
  }
107
  /* --------------------------------- */
108
-
109
  button {
110
  width: 100%;
111
  padding: 12px;
@@ -300,10 +299,9 @@
300
  </div>
301
 
302
  <script>
303
- // 全局变量存储初始图片的 Base64 数据
304
  let initImageBase64 = null;
305
 
306
- // --- 新增 JS:处理图片上传和预览 ---
307
  const fileInput = document.getElementById('init_image_input');
308
  const previewContainer = document.getElementById('preview-container');
309
  const previewImg = document.getElementById('preview-img');
@@ -312,38 +310,32 @@
312
  fileInput.addEventListener('change', function(e) {
313
  const file = e.target.files[0];
314
  if (file) {
315
- // 检查文件大小,限制为 4MB (大多数 API 的限制)
316
- if (file.size > 4 * 1024 * 1024) {
317
- alert("图片太大,请上传小于 4MB 的图片");
318
- this.value = ''; // 清空选择
319
  return;
320
  }
321
 
322
  const reader = new FileReader();
323
  reader.onload = function(event) {
324
- // 存储完整的 Data URL (包含 data:image/png;base64, 前缀)
325
  initImageBase64 = event.target.result;
326
- // 显示预览
327
  previewImg.src = initImageBase64;
328
  previewContainer.style.display = 'block';
329
- uploadBox.style.display = 'none'; // 隐藏上传框
330
  };
331
  reader.readAsDataURL(file);
332
  }
333
  });
334
 
335
- // --- 新增 JS:清除预览图片 ---
336
  function clearImagePreview() {
337
- fileInput.value = ''; // 清空 input
338
- initImageBase64 = null; // 清空变量
339
  previewImg.src = '';
340
- previewContainer.style.display = 'none'; // 隐藏预览
341
- uploadBox.style.display = 'block'; // 显示上传框
342
  }
343
- // ------------------------------------
344
 
345
  function toggleSubmitButton() {
346
- // ... (保持不变)
347
  const checkbox = document.getElementById('agree_chk');
348
  const btn = document.getElementById('gen-btn');
349
  if (checkbox.checked) {
@@ -356,7 +348,6 @@
356
  }
357
 
358
  async function generateImage() {
359
- // ... (前面部分保持不变)
360
  const apiKey = document.getElementById('api_key').value;
361
  const prompt = document.getElementById('prompt').value;
362
  const checkbox = document.getElementById('agree_chk');
@@ -385,12 +376,10 @@
385
  ratio: document.getElementById('ratio').value,
386
  scale: document.getElementById('scale').value,
387
  format: document.getElementById('format').value,
388
- // --- 新增:如果有初始图片,加入 payload ---
389
  init_image: initImageBase64
390
  };
391
 
392
  try {
393
- // ... (API 请求部分保持不变)
394
  const response = await fetch('/api/generate', {
395
  method: 'POST',
396
  headers: { 'Content-Type': 'application/json' },
@@ -416,7 +405,6 @@
416
  statusText.innerText = "网络请求失败";
417
  alert("网络请求失败,请检查控制台");
418
  } finally {
419
- // ... (清理工作保持不变)
420
  if (document.getElementById('agree_chk').checked) {
421
  btn.disabled = false;
422
  btn.innerText = "🚀 开始生成";
 
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>Nano Banana Generator</title>
7
  <style>
 
8
  :root {
9
  --bg-color: #0b0f19;
10
  --card-color: #1a1f2e;
 
53
  outline: none;
54
  border-color: var(--accent-color);
55
  }
56
+
57
  /* --- 新增样式:图生图上传预览 --- */
58
  .file-upload-wrapper {
59
  position: relative;
 
76
  .upload-placeholder { color: #a0aec0; pointer-events: none; }
77
 
78
  .preview-container {
79
+ display: none;
80
  margin-top: 10px;
81
  position: relative;
82
  width: fit-content;
 
104
  padding: 0;
105
  }
106
  /* --------------------------------- */
107
+
108
  button {
109
  width: 100%;
110
  padding: 12px;
 
299
  </div>
300
 
301
  <script>
 
302
  let initImageBase64 = null;
303
 
304
+ // 处理图片上传
305
  const fileInput = document.getElementById('init_image_input');
306
  const previewContainer = document.getElementById('preview-container');
307
  const previewImg = document.getElementById('preview-img');
 
310
  fileInput.addEventListener('change', function(e) {
311
  const file = e.target.files[0];
312
  if (file) {
313
+ if (file.size > 10 * 1024 * 1024) { // 稍微放宽前端限制,后端会压缩
314
+ alert("图片太大,请上传小于 10MB 的图片");
315
+ this.value = '';
 
316
  return;
317
  }
318
 
319
  const reader = new FileReader();
320
  reader.onload = function(event) {
 
321
  initImageBase64 = event.target.result;
 
322
  previewImg.src = initImageBase64;
323
  previewContainer.style.display = 'block';
324
+ uploadBox.style.display = 'none';
325
  };
326
  reader.readAsDataURL(file);
327
  }
328
  });
329
 
 
330
  function clearImagePreview() {
331
+ fileInput.value = '';
332
+ initImageBase64 = null;
333
  previewImg.src = '';
334
+ previewContainer.style.display = 'none';
335
+ uploadBox.style.display = 'block';
336
  }
 
337
 
338
  function toggleSubmitButton() {
 
339
  const checkbox = document.getElementById('agree_chk');
340
  const btn = document.getElementById('gen-btn');
341
  if (checkbox.checked) {
 
348
  }
349
 
350
  async function generateImage() {
 
351
  const apiKey = document.getElementById('api_key').value;
352
  const prompt = document.getElementById('prompt').value;
353
  const checkbox = document.getElementById('agree_chk');
 
376
  ratio: document.getElementById('ratio').value,
377
  scale: document.getElementById('scale').value,
378
  format: document.getElementById('format').value,
 
379
  init_image: initImageBase64
380
  };
381
 
382
  try {
 
383
  const response = await fetch('/api/generate', {
384
  method: 'POST',
385
  headers: { 'Content-Type': 'application/json' },
 
405
  statusText.innerText = "网络请求失败";
406
  alert("网络请求失败,请检查控制台");
407
  } finally {
 
408
  if (document.getElementById('agree_chk').checked) {
409
  btn.disabled = false;
410
  btn.innerText = "🚀 开始生成";