Pillow-PyMuPDF-ReportLab / backup2.app.py
awacke1's picture
Rename app.py to backup2.app.py
0b6db21 verified
import streamlit as st
import cv2
from PIL import Image
import numpy as np
from imutils.video import VideoStream
import pikepdf
import fpdf
import fitz # pymupdf
import vidgear.gears
# ๐ŸŒŸ๐Ÿ”ฅ Set up the Streamlit UI with an impressive demo style!
st.title("๐Ÿš€ Impressive Library Demo Extravaganza")
st.write("Watch these libraries flex their muscles with live demos producing real outputs!")
# ๐Ÿ“œ Demo Functions
def demo_pikepdf():
pdf = pikepdf.Pdf.new()
pdf.pages.append(pikepdf.Page(pikepdf.Dictionary()))
pdf.save("demo_pikepdf.pdf")
return "demo_pikepdf.pdf"
def demo_fpdf():
pdf = fpdf.FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="FPDF rocks!", ln=True)
pdf.output("demo_fpdf.pdf")
return "demo_fpdf.pdf"
def demo_pymupdf():
doc = fitz.open()
page = doc.new_page()
page.insert_text((100, 100), "Pymupdf shines!")
doc.save("demo_pymupdf.pdf")
return "demo_pymupdf.pdf"
def demo_opencv_image():
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
if ret:
cv2.imwrite("demo_opencv.jpg", frame)
cap.release()
return "demo_opencv.jpg"
cap.release()
return None
def demo_imutils():
vs = VideoStream(src=0).start()
frame = vs.read()
vs.stop()
if frame is not None:
cv2.imwrite("demo_imutils.jpg", cv2.cvtColor(frame, cv2.COLOR_RGB2BGR))
return "demo_imutils.jpg"
return None
def demo_vidgear():
stream = vidgear.gears.CamGear(source=0).start()
frame = stream.read()
stream.stop()
if frame is not None:
cv2.imwrite("demo_vidgear.jpg", frame)
return "demo_vidgear.jpg"
return None
# ๐ŸŒŸ Main Demo Interface
st.sidebar.header("๐ŸŽฎ Demo Controls")
demo_type = st.sidebar.selectbox("Choose a Demo Category", ["PDF", "Image Capture", "Video Capture"])
# ๐Ÿ“œ PDF Demos
if demo_type == "PDF":
st.subheader("๐Ÿ“œ PDF Powerhouse")
demo = st.selectbox("Pick a PDF Demo", ["pikepdf", "fpdf2", "pymupdf"])
if st.button("Run PDF Demo"):
with st.spinner("Running demo..."):
try:
if demo == "pikepdf":
result = demo_pikepdf()
st.download_button("Download PDF", open(result, "rb").read(), file_name=result)
elif demo == "fpdf2":
result = demo_fpdf()
st.download_button("Download PDF", open(result, "rb").read(), file_name=result)
elif demo == "pymupdf":
result = demo_pymupdf()
st.download_button("Download PDF", open(result, "rb").read(), file_name=result)
except Exception as e:
st.error(f"Demo failed: {str(e)}")
# ๐Ÿ“ธ Image Capture Demos
elif demo_type == "Image Capture":
st.subheader("๐Ÿ“ธ Image Snappers")
demo = st.selectbox("Pick an Image Demo", ["opencv-python", "imutils"])
if st.button("Run Image Demo"):
with st.spinner("Capturing image..."):
try:
if demo == "opencv-python":
result = demo_opencv_image()
if result:
st.image(result, caption="Snapped with OpenCV!")
else:
st.error("Camera not detected!")
elif demo == "imutils":
result = demo_imutils()
if result:
st.image(result, caption="Snapped with Imutils!")
else:
st.error("Camera not detected!")
except Exception as e:
st.error(f"Demo failed: {str(e)}")
# ๐ŸŽฅ Video Capture Demos
elif demo_type == "Video Capture":
st.subheader("๐ŸŽฅ Video Vanguards")
demo = st.selectbox("Pick a Video Demo", ["opencv-python", "vidgear"])
if st.button("Run Video Demo"):
with st.spinner("Capturing video frame..."):
try:
if demo == "opencv-python":
result = demo_opencv_image() # Using image capture as a proxy
if result:
st.image(result, caption="Frame from OpenCV Video!")
else:
st.error("Camera not detected!")
elif demo == "vidgear":
result = demo_vidgear()
if result:
st.image(result, caption="Frame from VidGear Video!")
else:
st.error("Camera not detected!")
except Exception as e:
st.error(f"Demo failed: {str(e)}")
# ๐Ÿ“Š Results Display
st.write("### Results")
st.write("Check out your impressive outputs above!")