• 2023.11.12使用flask对图片进行黑白处理(base64编码方式传输)


    2023.11.12使用flask对图片进行黑白处理(base64编码方式传输)

    由前端输入图片并预览,在后端处理图片后返回前端显示,可以作为图片处理的模板。
    关键点在于对图片进行base64编码的转化。
    使用Base64编码可以更方便地将图片数据嵌入到文档中或者通过JSON等文本格式进行传输。比如如下场景:
    (1)内联显示:如果需要在HTML文档中直接内联显示图片,可以将图片数据以Base64编码的形式嵌入到HTML或CSS中,而无需单独发送额外的图片请求。
    (2)数据传输:在某些情况下,由于限制或者需求,可能需要将图片数据作为文本传输,例如在JSON数据中一并传输图片。
    (3)减少HTTP请求:将图片数据编码为Base64可以避免额外的图片请求,特别是对于小尺寸的图片而言,这种方式可能会提高页面加载的效率。
    在服务器端,也可以将图片存储在特定的路径下,然后在HTTP响应中返回这个图片的URL,前端可以通过该URL进行图片的加载和展示。这种方式是最常见的图片传输方式,也是最高效的方式之一。
    另外,如果需要在前端内联显示图片,也可以通过HTTP响应返回图片的二进制数据,并在前端使用Blob URL或者直接使用二进制数据来展示图片,而无需进行Base64编码。

    from flask import Flask, render_template, request, jsonify
    from PIL import Image
    import io
    import base64
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return render_template('index.html')
    
    @app.route('/process', methods=['POST'])
    def process():
        if 'file' not in request.files:
            return jsonify({'error': 'No file part'})
    
        file = request.files['file']
        img = Image.open(file)
        bw_img = img.convert('L')  # 转换为黑白图片
    	
    	# 将处理后的图片转换为 Base64 编码
    	buffered = io.BytesIO()  # 创建一个内存缓冲区,用于存储图像数据
    	bw_img.save(buffered, format='JPEG')  # 将处理后的黑白图像保存到内存缓冲区中,格式为JPEG
    	img_str = base64.b64encode(buffered.getvalue()).decode()  # 使用base64模块对内存缓冲区中的图像数据进行Base64编码,并将结果转换为字符串格式
    
        return jsonify({'processed_image': img_str})
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    
    
    
        
        
        Image Processor
        
    
    
        

    Image Processor


    Preview and Processed Image

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70

    在这里插入图片描述

  • 相关阅读:
    40个Linux常用命令组合
    MySQL 存储引擎
    Sringcloud:一、微服务介绍+常用技术框架和技术对比+服务拆分demo
    【Java集合类】之Map集合的特点及使用
    【WPF应用30】WPF中的ListBox控件详解
    318. 最大单词长度乘积
    SpringBoot基础篇 (4)—SSMP整合案例
    Oracle 慢查询排查步骤
    告诉你怎么让网站内容快速收录的技巧
    【爬虫|数据分析|Hadoop】利用scrapy框架爬取小说信息并进行数据分析
  • 原文地址:https://blog.csdn.net/leigh_chen/article/details/134370865