GiantPandas commited on
Commit
2a2d0c1
·
verified ·
1 Parent(s): a890652

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -25
app.py CHANGED
@@ -281,7 +281,7 @@ def render_img(b64_list, idx, scale):
281
  """根据当前索引 idx 和缩放倍数 scale 渲染 HTML。"""
282
  if not b64_list:
283
  return "<p style='color:gray'>请先上传图片</p>"
284
- idx %= len(b64_list) # 防止越界
285
  src = b64_list[idx]
286
  return (
287
  f'<div style="overflow:auto;border:1px solid #ccc;'
@@ -292,20 +292,9 @@ def render_img(b64_list, idx, scale):
292
  )
293
 
294
 
295
-
296
  def files_to_b64(file, pdf_dpi: int = 200):
297
- """
298
- 把上传文件统一转成 base64 图片列表。
299
- • 普通图片:直接 base64
300
- • PDF :按页转成 PNG 再 base64
301
-
302
- 返回
303
- ----
304
- List[str] 每个元素形如 "data:image/png;base64,xxxx..."
305
- """
306
  out: list[str] = []
307
- # ---------- Gradio 4.x NamedString / FileData ----------
308
- if hasattr(file, "data"): # 新版 FileData / NamedString
309
  raw_bytes = file.data
310
  suffix = pathlib.Path(file.name).suffix.lower()
311
 
@@ -317,13 +306,10 @@ def files_to_b64(file, pdf_dpi: int = 200):
317
  page.save(buf, format="PNG")
318
  b64 = base64.b64encode(buf.getvalue()).decode()
319
  out.append(f"data:image/png;base64,{b64}")
320
-
321
- # -- 普通图片 --
322
  else:
323
  b64 = base64.b64encode(raw_bytes).decode()
324
  out.append(f"data:image/{suffix[1:]};base64,{b64}")
325
 
326
- # ---------- 旧版:直接获得文件路径 ----------
327
  else:
328
  path = pathlib.Path(file)
329
  suffix = path.suffix.lower()
@@ -379,10 +365,11 @@ if __name__ == '__main__':
379
  change_bu = gr.Button('Parse')
380
  clear_bu = gr.ClearButton(value='Clear')
381
 
 
382
  with gr.Row():
383
  prev_btn = gr.Button("⬅️ Pre")
384
  next_btn = gr.Button("Next ➡️")
385
- zoom = gr.Slider(0.5, 3, value=1, step=0.1, label="Scale")
386
 
387
  viewer = gr.HTML()
388
 
@@ -432,15 +419,15 @@ if __name__ == '__main__':
432
  line_breaks=True)
433
  with gr.Tab('Markdown text'):
434
  md_text = gr.TextArea(lines=45, show_copy_button=True)
435
-
436
-
437
-
438
- # file.change(fn=process_file, inputs=file, outputs=pdf_show)
439
 
440
- img_list_state = gr.State([]) # base64 列表
441
- idx_state = gr.State(0) # 当前索引
442
 
443
- def upload_handler(files):
 
 
 
 
444
  b64s = files_to_b64(files)
445
  return b64s, 0, render_img(b64s, 0, 1)
446
 
@@ -470,7 +457,6 @@ if __name__ == '__main__':
470
  outputs=[idx_state, viewer],
471
  )
472
 
473
- # 缩放滑块变化
474
  zoom.change(
475
  lambda b64s, idx, scale: render_img(b64s, idx, scale),
476
  inputs=[img_list_state, idx_state, zoom],
 
281
  """根据当前索引 idx 和缩放倍数 scale 渲染 HTML。"""
282
  if not b64_list:
283
  return "<p style='color:gray'>请先上传图片</p>"
284
+ idx %= len(b64_list)
285
  src = b64_list[idx]
286
  return (
287
  f'<div style="overflow:auto;border:1px solid #ccc;'
 
292
  )
293
 
294
 
 
295
  def files_to_b64(file, pdf_dpi: int = 200):
 
 
 
 
 
 
 
 
 
296
  out: list[str] = []
297
+ if hasattr(file, "data"):
 
298
  raw_bytes = file.data
299
  suffix = pathlib.Path(file.name).suffix.lower()
300
 
 
306
  page.save(buf, format="PNG")
307
  b64 = base64.b64encode(buf.getvalue()).decode()
308
  out.append(f"data:image/png;base64,{b64}")
 
 
309
  else:
310
  b64 = base64.b64encode(raw_bytes).decode()
311
  out.append(f"data:image/{suffix[1:]};base64,{b64}")
312
 
 
313
  else:
314
  path = pathlib.Path(file)
315
  suffix = path.suffix.lower()
 
365
  change_bu = gr.Button('Parse')
366
  clear_bu = gr.ClearButton(value='Clear')
367
 
368
+ zoom = gr.Slider(0.5, 3, value=1, step=0.1, label="Scale")
369
  with gr.Row():
370
  prev_btn = gr.Button("⬅️ Pre")
371
  next_btn = gr.Button("Next ➡️")
372
+
373
 
374
  viewer = gr.HTML()
375
 
 
419
  line_breaks=True)
420
  with gr.Tab('Markdown text'):
421
  md_text = gr.TextArea(lines=45, show_copy_button=True)
 
 
 
 
422
 
423
+ img_list_state = gr.State([])
424
+ idx_state = gr.State(0)
425
 
426
+ async def upload_handler(files):
427
+
428
+ if files.lower().endswith(".pdf") or :
429
+ asyncio.create_task(send_pdf_async_aiohttp(files, server_ip=openai_api_base, Authorization=Authorization))
430
+
431
  b64s = files_to_b64(files)
432
  return b64s, 0, render_img(b64s, 0, 1)
433
 
 
457
  outputs=[idx_state, viewer],
458
  )
459
 
 
460
  zoom.change(
461
  lambda b64s, idx, scale: render_img(b64s, idx, scale),
462
  inputs=[img_list_state, idx_state, zoom],