[英]Django display a png created with a view
我目前正在做一个项目,我想建立一个网站,您可以在其中输入任何 URL。 通过单击按钮,您应该会获得此请求网站的屏幕截图。 此外,还有另一个按钮可以将此 png 调制为 RGB 图像。
几天来,我遇到了一个问题,屏幕截图生成但不再显示在我的网站上,而仍然显示旧图像。 这是我的 HTML 模板。
<h1> CovertCast </h1>
<form action="" method="post">
{% csrf_token %}
<label>url:
<input type="url" name="deine-url" value="https://">
</label>
<button type="submit">Get Screenshot</button>
</form>
{% load static %}
<img src="/media/screenshot_image.png" class="bild"/>
<form action="/modulated.html" method="post">
{% csrf_token %}
<button type="submit">Modulate</button>
</form>
<img src="/media/modulated_image.png" alt="abc"/>
我的函数视图如下所示:
def screenshot(request):
DRIVER = 'chromedriver.exe'
if request.method == 'POST' and 'deine-url' in request.POST:
url = request.POST.get('deine-url', '')
if url is not None and url != '':
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--ignore-ssl-errors')
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get(url)
img_dir = settings.MEDIA_ROOT
img_name = ''.join(['screenshot', '_image.png'])
path = os.path.join(img_dir, img_name)
if not os.path.exists(img_dir):
os.makedirs(img_dir)
driver.save_screenshot(path)
screenshott = img_name
driver.quit()
return render(request, 'main.html')
else:
return render(request, 'main.html')
def modulate(request):
with open('screenshot_image.png', 'rb') as image:
f = image.read()
a = bytearray(f)
w = 1280
h = 720
data = np.zeros([h, w, 3], dtype=np.uint8)
i = 0
x = 0
x2 = 8
y = 0
y2 = 8
while i < len(a) - 5:
r = 160 * a[i] + 32 * a[i + 1]
g = 160 * a[i + 2] + 32 * a[i + 3]
b = 160 * a[i + 4] + 32 * a[i + 5]
data[x:x2, y:y2] = [r, g, b]
y += 8
y2 += 8
if y == w:
x += 8
x2 += 8
y = 0
y2 = 8
i = i + 6
modulatedimg = Image.fromarray(data)
img_dir = settings.MEDIA_ROOT
img_name = ''.join(['modulated', '_image.png'])
full_img_path = os.path.join(img_dir, img_name)
modulatedimg.save(full_img_path)
return render(request, 'web/main.html')
应用程序中的 urls.py:
app_name = 'web'
urlpatterns = [
path("", views.screenshot, name='screenshot'),
path("/modulated", views.modulate, name='modulate'),
]
整个项目的urls.py:
urlpatterns = [
path('admin/', admin.site.urls),
path('web/', include('web.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
此外,我的应该调制 RGB 图像的视图在 Django 中根本不起作用,即使在我单独测试时它也起作用。
任何帮助深表感谢!
也许那个screenshott
应该是screenshot
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.