获取文件输入框中的图片,并用canvas转成base64位格式

本文介绍了一种使用HTML、CSS及JavaScript将用户上传的图片转换为Base64编码的方法。通过前端技术实现图片的即时预览与格式转换,便于在网络应用中传输与展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:需要以服务器模式打开此文件

直接上代码:
CSS:

#canvas{
            display: none;
        }

HTML:

<input type="file" accept="image/*" id='file'>
    <canvas id='canvas'></canvas>
    <img src="" id='target-img'>

javascript:

let canvas = document.getElementById("canvas"),
    targetImg = document.getElementById('target-img'),
    file = document.getElementById('file'),
    context = canvas.getContext('2d')

    file.onchange = function () {
        let URL = window.URL || window.webkitURL,
        dataURL = URL.createObjectURL(this.files[0])    // 创建URL对象
        let img = new Image()
        img.crossOrigin = "anonymous"   // 只有服务器模式打开, 才有效
        img.onload = function () {
            URL.revo.revokeObjectURL(this.src)  //  img加载完成后,主动释放URL对象
            canvas.width = img.width
            canvas.height = img.height
            context.drawImage(img, 0, 0 , img.width,  img.height)
            let dataUrl = canvas.toDataURL('img/png')
            targetImg.src = dataUrl
        }

        img.src = dataURL
    }
from tkinter import * import requests import json from tkinter import ttk, messagebox import datetime import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import warnings import re import os warnings.filterwarnings("ignore") # 创建主窗口 root = Tk() root.title('智能天气查询系统') root.geometry('500x350') root.configure(bg='#2c3e50') root.resizable(True, True) # 创建顶部标题 header_frame = Frame(root, bg='#3498db', height=80) header_frame.pack(fill=X, side=TOP) title_label = Label(header_frame, text='智能天气查询系统', fg="white", bg='#3498db', font=('微软雅黑', 20, 'bold')) title_label.pack(pady=15) # 城市选择区域 control_frame = Frame(root, bg='#2c3e50', padx=10, pady=10) control_frame.pack(fill=X, padx=10, pady=5) Label(control_frame, text='选择城市:', bg='#2c3e50', fg='white', font=('微软雅黑', 11)).grid(row=0, column=0, padx=5, pady=5, sticky=W) city_var = StringVar() city_combo = ttk.Combobox(control_frame, textvariable=city_var, width=20, font=('微软雅黑', 11)) city_combo.grid(row=0, column=1, padx=5, pady=5) # 刷新按钮 refresh_btn = Button(control_frame, text="查询天气", width=10, bg='#2ecc71', fg='white', font=('微软雅黑', 10, 'bold')) refresh_btn.grid(row=0, column=2, padx=10, pady=5) # 当前时间显示 time_label = Label(control_frame, text='', bg='#2c3e50', fg='#ecf0f1', font=('Consolas', 12)) time_label.grid(row=1, column=0, columnspan=3, pady=5) # 天气信息显示区域 info_frame = Frame(root, bg='#34495e', padx=10, pady=10) info_frame.pack(fill=BOTH, expand=True, padx=10, pady=10) # 当前天气信息 cur_temp_label = Label(info_frame, text='--℃', bg='#34495e', fg='#ecf0f1', font=('微软雅黑', 28, 'bold')) cur_temp_label.pack(pady=5) weather_type_label = Label(info_frame, text='--', bg='#34495e', fg='#ecf0f1', font=('微软雅黑', 14)) weather_type_label.pack(pady=2) # 详细信息 detail_frame = Frame(info_frame, bg='#34495e') det
最新发布
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值