在JavaScript中,将图片的绝对路径转换为base64字符串或blob对象,是常见的图片上传前的预处理步骤。这通常用于将用户选择的本地图片数据化,以便于通过Ajax方式上传到服务器,同时可以避免跨域问题。下面将详细阐述这个过程。 首先,将图片的绝对路径转换为base64字符串,主要依赖于HTML5的``元素的`toDataURL()`方法。这个方法可以将画布的内容转换为一个data URL,即base64编码的字符串,可以直接作为``标签的`src`属性使用。下面是一个简单的示例: ```javascript function getBase64Image(imgPath, width, height) { var img = new Image(); img.src = imgPath; var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); // 确保图片加载完成 img.onload = function() { canvas.width = width || img.width; canvas.height = height || img.height; ctx.drawImage(img, 0, 0, canvas.width, canvas.height); var dataURL = canvas.toDataURL(); return dataURL; }; return img; } // 使用示例 getBase64('img/1.jpg').then(function(base64String) { console.log(base64String); }, function(err) { console.log(err); }); ``` 在这个例子中,`getBase64Image`函数接收图片路径、宽度和高度作为参数。它创建一个新的`Image`对象并设置其`src`属性为图片路径。当图片加载完成后,利用`canvas`绘制图片并调用`toDataURL`获取base64字符串。 如果图片位于不同的源(例如,跨域),浏览器出于安全考虑,会阻止在`canvas`上操作这些图片。为了解决这个问题,你可以将图片放在本地服务器下,以避免跨域问题。如示例中的`var imgSrc = "img/1.jpg";`,这样图片就在同一个源下,不会触发跨域错误。 除了base64字符串,还可以将图片转换为blob对象。blob对象是二进制大型对象,适用于处理大量数据。转换过程如下: ```javascript function imageToBlob(base64String) { return fetch(base64String.replace('data:image/jpeg;base64,', '')) .then(response => response.blob()); } // 使用示例 getBase64('img/1.jpg').then(base64String => { imageToBlob(base64String).then(blob => { // 上传blob对象 uploadImage(blob); }); }, function(err) { console.log(err); }); ``` 在这个例子中,`imageToBlob`函数首先将base64字符串转换为fetch请求,然后将响应体转换为blob对象。最后,可以将这个blob对象通过Ajax或其他异步方法上传到服务器。 总结起来,JavaScript中处理图片上传的过程通常包括以下步骤: 1. 获取图片的绝对路径。 2. 将图片路径转换为`Image`对象。 3. 使用`canvas`绘制图片并获取base64字符串或blob对象。 4. 上传base64字符串或blob对象到服务器。 确保处理过程中遵循同源策略,必要时将图片放在本地服务器,以避免跨域问题。同时,对于大文件,使用blob对象上传可能更高效,因为它允许分块传输。
2024-06-22 20:55:03 51KB 图片上传
1
项目为课程设计,实现厨房着火,煤气泄漏的实时检测,STM32可以采集温度传感器DS18b20,烟雾MQ-7,CO MQ-2传感器的数据,同时采集OV7670摄像头的图片数据,通过MQTT协议发送到ONENET平台。在ONENET平台中可以通过可视化界面实时显示相应数据,同时可以调节相应传感器的报警阈值,出现报警时发送报警信息至用户邮箱。
2024-05-11 13:57:28 6.7MB stm32 Onenet MQTT ESP8266
1
一款简单实用的HTML5手机移动端头像图片上传裁剪代码,支持拖动放大缩小调整进行图片裁剪。
2024-03-01 17:28:09 35KB 图片特效
1
Android图片上传(头像裁切+原图原样) http://blog.csdn.net/geofferysun/article/details/42835669
2024-02-28 19:51:47 855KB Android 图片上传 头像裁切
1
还不错,我修改过。有源码。大家可以下载研究 也可以直接使用。
2024-01-31 07:44:35 652KB 图片上传 源码
1
微信小程序源码,完整实现图片裁剪功能。 可以自由拖动裁剪框和手动调整裁剪尺寸,实时显示裁剪尺寸大小,准确完成图片裁剪功能,并且能够恢复原始图片,不会丢失原图。 提供完整源码,能够直接在小程序里正常运行,纯前端代码(canvas画布裁剪),非常简洁,并附有详细的注释、说明重点实现路径和技术细节。 可供小程序初学者或者需要处理图片功能的开发者使用,可在图片上传、头像制作、固定尺寸图片要求等场景下使用。 也能够基于当前源码,进行小程序的组件封装,扩展更多可用的功能。
2024-01-14 15:00:19 12KB 微信小程序 图片裁剪 图片上传 canvas
1
一个本地拍照后,剪切图片,然后上传到php服务器端,并且实现把图片保存在设置的文件夹中,以便后面开发中要获取该图片
2023-12-25 09:07:29 1.21MB android 图片上传保存
1
中小型饭店点菜系统,基于Javaweb开发,基于springboot,实现图片上传和显示,实现登录,实现统计菜品金额,实现结账。中小型饭店点菜系统,基于Javaweb开发,基于springboot,实现图片上传和显示,实现登录,实现统计菜品金额,实现结账。中小型饭店点菜系统,基于Javaweb开发,基于springboot,实现图片上传和显示,实现登录,实现统计菜品金额,实现结账。
2023-12-20 11:52:42 5.93MB java
1
版本:python3.7 功能,开发一个用户访问的页面,支持图片上传,并将其保存在服务器。 项目结构: app.py文件内容如下: from flask import Flask, Response, request, render_template from werkzeug.utils import secure_filename import os app = Flask(__name__) # 设置图片保存文件夹 UPLOAD_FOLDER = 'photo' app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER # 设置允许上传的文件格式 ALL
2023-11-23 15:03:56 84KB python python实例
1
PHP file文件模式简单图片上传简单例子。form表单提交图片资源。
2023-11-08 22:36:44 1KB 图片上传 文件类型
1