- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有一种方法可以操纵(处理)来自 HTML5 FileReader 函数 readAsDataUrl() 的图像数据?
我感兴趣的是加载图像并仅显示它的一部分。我可以只剪切数据字符串并且它可以工作,但我在控制台中收到错误消息,图像已被 chop 。
我想我必须知道数据结构。我想会有标题和图像数据,只是不知道如何计算什么是什么然后计算图像数据中的像素。
有可能吗?我应该使用 canvas 而不是只在 JS 中尝试吗?
最佳答案
正如我在评论中所说, Canvas 可能是最简单、最自然的方式。
这是一个使用 Canvas 修改图像,然后将修改后的图像构建为 HTML img
元素的简单示例:
function init() {
var img = document.getElementById('orig');
var mod = document.getElementById('mod');
var canvas = document.getElementById('c');
var context = canvas.getContext('2d');
canvas.width = canvas.height = 64;
context.drawImage(img, 0,0, 256, 256, 0, 0, 64, 64);
mod.src = canvas.toDataURL();
}
<p>Original Image</p>
<img id="orig" src="https://lh3.googleusercontent.com/-kUKEPU5ZpLw/AAAAAAAAAAI/AAAAAAAAABI/oVLnH7VD59A/photo.jpg" onload="init()" crossOrigin="anonymous" />
<p>Canvas Image</p>
<canvas id="c"></canvas>
<p>Modified Image</p>
<img id="mod" src="" />
这只会调整图像的大小,但您可以做任何您喜欢的事情,即使是在像素级别。
这是裁剪图像的另一个例子:
function init() {
var img = document.getElementById('orig');
var mod = document.getElementById('mod');
var canvas = document.getElementById('c');
var context = canvas.getContext('2d');
canvas.width = canvas.height = 64;
context.drawImage(img, 64,64, 64, 64, 0, 0, 64, 64);
mod.src = canvas.toDataURL();
}
<p>Original Image</p>
<img id="orig" src="https://lh3.googleusercontent.com/-kUKEPU5ZpLw/AAAAAAAAAAI/AAAAAAAAABI/oVLnH7VD59A/photo.jpg" onload="init()" crossOrigin="anonymous" />
<p>Canvas Image</p>
<canvas id="c"></canvas>
<p>Modified Image</p>
<img id="mod" src="" />
让我们杀掉红色:
function init() {
var img = document.getElementById('orig');
var mod = document.getElementById('mod');
var canvas = document.getElementById('c');
var context = canvas.getContext('2d');
canvas.width = canvas.height = 64;
context.drawImage(img, 0, 0, 256, 256, 0, 0, 64, 64);
var imageData = context.getImageData(0, 0, 64, 64);
var data = imageData.data;
for (var i = 0, n = data.length; i < n; i += 4) {
data[i] = 0;
}
context.putImageData(imageData, 0, 0);
mod.src = canvas.toDataURL();
}
<p>Original Image</p>
<img id="orig" src="https://lh3.googleusercontent.com/-kUKEPU5ZpLw/AAAAAAAAAAI/AAAAAAAAABI/oVLnH7VD59A/photo.jpg" onload="init()" crossOrigin="anonymous" />
<p>Canvas Image</p>
<canvas id="c"></canvas>
<p>Modified Image</p>
<img id="mod" src="" />
关于javascript - 处理从 readAsDataURL() 返回的图像数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28810039/
此函数读取从输入字段获取的文件并返回它们的 dataUrls: readAsDataURL (target) { // target => var reader = new FileRead
我试图在我的网站中实现拖放功能。我需要将拖放的图像转换为数据 URI,以便我可以将它与 JCrop 一起使用并在之后上传。 drop: function (e) {
如果用户将图像拖到浏览器中,我已在代码中添加了一个 eventListerner 进行注册。然后我想获取图像的src。我在本地使用 xampp 工作。这是行不通的。控制台显示“匿名函数”和 Uncau
在使用 readAsDataURL 读取图像时,如何强制返回图像类型(如果没有返回), window.onload = function() { if (window.File && wind
我有一个关于 File API 的问题以及用 JavaScript 上传文件以及我应该如何执行此操作。 我已经使用了一个非常简单的文件 uploader ,它只是从输入中获取文件并向服务器发出请求,然
我正在使用 PhoneGap 编写我的第一个 Android 应用程序,但我对 FileReader 的文档感到有点困惑。我需要获取一个图像文件并使用 readAsDataURL() 方法将其转换为
在 Gecko/Firefox 中我收到错误信息: TypeError: fr.readAsDataurl is not a function 使用以下 JavaScript: var fr = ne
我正在尝试使用 FileReader(0.10.3) 读取 jpg 文件。因为当我调用 readAsDataURL 时,它会出现错误并显示消息:“无法读取为文件:{}”。我查看了指向该方法内部的错误,
好吧,我已经看到了很多有关使用 readAsDataURL() 的示例和问题,但它们似乎都不能解决我的问题。以下是我的代码: $(document).ready(function(){ var
美好的一天,我如何更改我的代码,以便它接受带有预览的多个图像上传,并且用户可以删除和设置主图像。 顺便说一句,我的代码只允许上传一张图片。 这是我到目前为止所得到的: _handleImageChan
有没有一种方法可以操纵(处理)来自 HTML5 FileReader 函数 readAsDataUrl() 的图像数据? 我感兴趣的是加载图像并仅显示它的一部分。我可以只剪切数据字符串并且它可以工作,
我在从某个文件中获取 URI 时遇到了一些麻烦,例如 .mp4/.ogg/etc..问题是我需要在运行网络服务器的 python 中完成。 最初,我是这样进行的: def __parse64(self
我有一个需要保存的文件列表,除了名称之外,我还需要将 readAsDataURL 发送到服务器。 问题是我不确定如何使用 readAsDataURL 的异步特性来完成它。因为要将 DATAURL 保存
当我将一个文件加载到浏览器中时,我想向用户显示一个动画加载 gif。但是如果文件很大,浏览器看起来很忙,我的 gif 动画就无法工作。我可以做些什么来可视化加载? HTML JS reader.re
jsFiddle 网址:http://jsfiddle.net/Xotic750/AjtLx 整天都在处理这个问题,但我看不到问题所在。这可能是由于我对 FileReader 对象如何工作的狭隘理解,
我找不到任何使用 FileReader.readAsDataURL 并在容器中以正确的图像方向 显示结果图像的示例。 所有来 self 的相机和 iPhone 设备的人像图像都有这个问题。只有用ado
我试图使用 Cordova 文件插件的 readAsDataURL 函数来获取视频文件的 base64 版本,但没有成功。我的代码如下所示: recordVideo() { retur
我正在使用 readAsDataURL 加载图像,如下所示... function previewFile() { console.log('Start Function') var prev
我有一个文件输入,然后在添加后预览图像。图像显示,但我得到:未捕获类型错误:无法在“FileReader”上执行“readAsDataURL”:参数 1 不是“Blob”类型。” 是什么原因造成的,它
我有一个 HTML5 图像编辑器,我想启用用户上传的自定义字体。 我想使用 HTML5 FileReader.readAsDataURL 将用户提供的字体存储在数据库中。将其存储在数据库中后,我希望能
我是一名优秀的程序员,十分优秀!