برنامه نویسی

برای سونیا – شری

`از فلاسک واردات فلاسک ، render_template ، درخواست ، سقط
درخواست های واردات
وارد کردن سیستم عامل
از tool.utils import secure_filename

برنامه = فلاسک (نام)

دایرکتوری های لازم را ایجاد کنید

os.makedirs (“استاتیک/تصاویر” ، وجود_ک = درست)

@app.route ('/')
DEF INDEX ():
Return Render_Template ('index.html')

@app.route ('/fetch/مسیر: Image_Url ')
def fetch_image (image_url):
سعی کنید:
# تصویر واکشی از URL ارائه شده
پاسخ = درخواست ها. get (image_url ، stream = true)

    if response.status_code != 200:
        return abort(404, "Could not fetch image from URL")

    # Generate a secure filename for the image
    filename = secure_filename(image_url.split('/')[-1])
    if not filename.endswith('.png'):
        filename = filename.split('.')[0] + '.png'

    # Save the image
    img_path = os.path.join('static/images', filename)
    with open(img_path, 'wb') as f:
        for chunk in response.iter_content(1024):
            f.write(chunk)

    # Store image info in a variable that will be passed to template
    img1 = {
        'filename': filename,
        'path': f'images/{filename}',
        'source_url': image_url
    }

    return render_template('image.html', img1=img1)

except Exception as e:
    return abort(500, f"Error processing image: {str(e)}")

اگر نام == 'اصلی'
app.run (debug = true) `

در اینجا توضیح تمیز و واضح از کد فلاسک شما به اشتراک گذاشته اید ، با تمرکز بر آنچه که هر قسمت انجام می دهد و نحوه عملکرد تصویر کار می کند:

هدف این برنامه:

این برنامه Flask یک URL تصویر را به عنوان ورودی می گیرد ، تصویر را از اینترنت می گیرد ، آن را به صورت محلی در یک ذخیره می کند static/images پوشه ، و آن را در یک صفحه وب نمایش می دهد.

🔍 تجزیه کد:

1 وارد کردن

from flask import Flask, render_template, request, abort
import requests
import os
from werkzeug.utils import secure_filename
  • Flask – برنامه وب را ایجاد می کند.
  • render_template – الگوهای HTML را ارائه می دهد.
  • request – داده های ورودی را کنترل می کند (مستقیماً در اینجا استفاده نمی شود ، اما اگر قصد دارید آن را گسترش دهید).
  • abort – کدهای خطا مانند 404 یا 500 را برمی گرداند.
  • requests – برای واکشی تصویر از URL استفاده می شود.
  • os – در ایجاد پوشه ها و رسیدگی به مسیرهای فایل کمک می کند.
  • secure_filename – با خیال راحت نام پرونده را برای جلوگیری از گذر از مسیر و سایر مسائل قالب بندی می کند.

2 تنظیم برنامه و ایجاد فهرست

app = Flask(__name__)
os.makedirs('static/images', exist_ok=True)
  • Flask(__name__) – برنامه Flask را شروع می کند.
  • os.makedirs(...) – پوشه را ایجاد می کند static/images اگر قبلاً وجود نداشته باشد.

3 مسیر صفحه اصلی

@app.route('/')
def index():
    return render_template('index.html')
  • بارها index.html وقتی URL ریشه را باز می کنید /بشر

4 مسیر واکشی تصویر

@app.route('/fetch/<path:image_url>')
def fetch_image(image_url):
  • این مسیر هنگامی که کاربر به آنجا برود آغاز می شود /fetch/<image_url>بشر
  • <path:image_url> اجازه می دهد تا بر روی URL تصویر بریده شود.

5 واکشی و ذخیره تصویر

response = requests.get(image_url, stream=True)
  • ارسال می کند بدست آوردن درخواست برای واکشی محتوای تصویر.
if response.status_code != 200:
    return abort(404, "Could not fetch image from URL")
  • اگر تصویر در دسترس نیست (وضعیت 200) ، خطای 404 را برگردانید.

6 یک نام ایمن ایجاد کنید

filename = secure_filename(image_url.split('/')[-1])
  • قسمت آخر URL (احتمالاً نام پرونده) را استخراج می کند و آن را ایمن می کند.
if not filename.endswith('.png'):
    filename = filename.split('.')[0] + '.png'
  • تضمین می کند پرونده با پایان .png برای یکنواختی

7 تصویر را به صورت محلی ذخیره کنید

img_path = os.path.join('static/images', filename)
with open(img_path, 'wb') as f:
    for chunk in response.iter_content(1024):
        f.write(chunk)
  • تصویر را در تکه ها (1 کیلوبایت در یک زمان) ذخیره می کند static/imagesبشر

8 اطلاعات تصویر را برای نمایش آماده کنید

img1 = {
    'filename': filename,
    'path': f'images/{filename}',
    'source_url': image_url
}
  • یک فرهنگ لغت اطلاعات در مورد تصویر ذخیره شده: نام پرونده ، مسیر نسبی و URL منبع اصلی.

9 صفحه تصویر را ارائه دهید

return render_template('image.html', img1=img1)
  • اطلاعات تصویر را به image.html برای نمایش آن

10 رسیدگی به خطا

except Exception as e:
    return abort(500, f"Error processing image: {str(e)}")
  • خطاهای غیر منتظره (مشکلات شبکه ، مشکلات دیسک و غیره) را کنترل می کند و خطای 500 را نشان می دهد.

11 برنامه Flask را شروع کنید

if __name__ == '__main__':
    app.run(debug=True)
  • برای توسعه آسانتر و ردیابی خطا ، برنامه را در حالت اشکال زدایی شروع می کند.

ساختار پوشه فرض شده:

project_folder/
│
├── app.py
├── templates/
│   ├── index.html
│   └── image.html
└── static/
    └── images/

✅ tl ؛ دکتر:

  • چه کاری انجام می دهد: یک URL تصویر می گیرد ، آن را واکشی می کند ، آن را ذخیره می کند .png، و آن را نمایش می دهد.
  • ویژگی های کلیدی: دست زدن به نام خانوادگی ایمن ، ذخیره محلی ، رسیدگی به خطا و ارائه از طریق قالب ها.
  • مفید برای: ابزارهای پیش نمایش تصویر ، بارگیری کننده ها یا پردازنده های تصویر مبتنی بر وب.

آیا دوست داری نمونه بدهم index.html وت image.html کد هم ، برای تکمیل این برنامه؟

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا