首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我能以blob的形式获得跨站点<img/>标记的数据吗?

我能以blob的形式获得跨站点<img/>标记的数据吗?
EN

Stack Overflow用户
提问于 2012-03-07 18:44:53
回答 1查看 3.2K关注 0票数 5

我试图保存几张图片,这些图片是通过网页链接到离线存储的。我在火狐上使用IndexedDB,在Chrome上使用FileSystem API。我的代码实际上是一个扩展,所以在Firefox上,我运行在Greasemonkey上,在Chrome上作为内容脚本运行。我希望这是自动化的。

当检索图像文件时,我遇到了问题。我正在使用题为在IndexedDB中存储图像和文件的文章中的示例代码,但我得到了一个错误:我试图下载的图像位于不同的子域中,XHR失败。

代码语言:javascript
运行
AI代码解释
复制
XMLHttpRequest cannot load http://...uxgk.JPG. Origin http://subdomain.domain.com is not allowed by Access-Control-Allow-Origin.

在火狐上,我可能会使用GM_xmlhttpRequest,它可以工作(当我使用相同的原点URL时,代码在两个浏览器上都能工作),但我仍然需要解决Chrome的问题,在这个问题中,其他约束(即需要与主页上的框架交互)要求我在页面中合并我的脚本,并丧失我的特权。

因此,回到我正在试图找到一种方法来保存链接到IndexedDB和/或FileSystem API的页面(并且可能出现在)的图像。我要么需要意识到如何解决Chrome中的跨源问题(如果它需要特权,那么我需要修复与jQuery交互的方式)或某种反向createObjectURL。最后,我需要一个blob (据我所知,File对象)放入IndexedDB (火狐)或写入FileSystem API (Chrome)。

有人帮忙吗?

编辑:我的问题可能真的归结于我如何在不失去Chrome上的内容脚本特权的情况下以我想要的方式使用jQuery。如果是的话,我可以在Chrome上使用异源XHR。也是。虽然我更愿意得到一个不依赖于此的解决方案。特别是,如果我将脚本合并到网页中,并且不要求它是一个内容脚本/用户脚本,我想要这个解决方案。

编辑:我意识到这个问题只是关于跨站点的请求。现在,我有三种方法获得图像blob,在@chris、这些 问题和其他一些页面(如)的帮助下,可以在这把小提琴中看到。但是,所有这些都需要特殊特权才能运行。唉,因为我在一个有框架的页面上运行,因为有了铬中已知的缺陷,我无法访问这些帧。因此,我可以使用all_frames: true将脚本加载到每个帧中,但我确实希望避免在每次加载框架时加载脚本。否则,根据这篇文章,我需要摆脱沙箱,但它会返回到特权。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-07 18:53:07

因为你在Chrome和Firefox上运行,所以幸运的是,你的回答是肯定的(有点)。

代码语言:javascript
运行
AI代码解释
复制
function base64img(i){
    var canvas = document.createElement('canvas');
    canvas.width = i.width;
    canvas.height = i.height;
    var context = canvas.getContext("2d");
    context.drawImage(i, 0, 0);
    var blob = canvas.toDataURL("image/png");
    return blob.replace(/^data:image\/(png|jpg);base64,/, "");
}

这将返回base64编码的映像。

从这里开始,您只需将函数称为类似于以下内容的函数:

代码语言:javascript
运行
AI代码解释
复制
image = document.getElementById('foo')
imgBlob = base64img(image);

然后继续存储imgBlob

编辑:由于文件大小是个问题,您也可以将数据存储为canvasPixelArray,其宽度*高度*大小为4字节。

代码语言:javascript
运行
AI代码解释
复制
imageArray = context.getImageData( 0, 0 ,context.canvas.width,canvasContext.canvas.height );

然后JSONify数组并保存它?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9612229

复制
相关文章
Windows 窗体中的事件顺序
对于依次处理其中每个事件的开发人员,Windows 窗体应用程序中引发事件的顺序非常具有吸引力。 当出现需要谨慎处理事件的情况时(例如,在重绘窗体的某些部件时),有必要了解运行时引发事件的确切顺序。 本主题提供了应用程序和控件的生存期中几个重要阶段中的事件顺序的详细信息。 有关鼠标输入事件的顺序的特定详细信息,请参阅Windows 窗体中的鼠标事件。Windows 窗体中的事件的概述,请参阅事件概述。 有关事件处理程序的构成的详细信息,请参阅事件处理程序概述。
CNXY
2019/05/24
1.3K0
C#学习系列文章之Windows窗体应用程序003
紧接着上一篇文章,我已经学习了控制台的使用,以及创建不同应用的Helloworld程序,这一篇文章,我介绍Windows窗体应用程序的简单实用,按照调用流程一步一步的操作,希望能帮助初学者也能一步一步的搭建起自己的第一个应用。由于本人水平有限,文章中难免有介绍不足的地方,敬请谅解。
算法发
2020/01/16
1.9K0
C#学习系列文章之Windows窗体应用程序003
windows窗体线程异常_指针在声明和使用时有何不同
大家好,又见面了,我是你们的朋友全栈君。 在多线程设计中,许多人为了省事,会将对话框类或其它类的指针传给工作线程,而在工作线程中调用该类的成员函数或成员变量等等。 但是在Debug版本时,在某些情况下,特别是在工作线程中调用pWnd->UpdateData(FALSE)时,会出现错误。 这个错误的原因网上有许多地方讲到了,但是,令人失望的是,讲得好的没几篇,都是非要讲什么线程模块状态什么的,让人看得云里雾里(不过,说实话,也就是从这些文章中才知道是怎么回事的)。
全栈程序员站长
2022/10/04
5310
WinForm之窗体应用程序
WinForm之窗体应用程序 基本简单数据库操作(增删改查) 1 using System; 2 using System.Collections.Generic; 3 using System.Windows.Forms; 4 5 namespace DataBaseOperation 6 { 7 static class Program 8 { 9 /// <summary> 10 /// 应用程序的主入口点。 11 /
用户1112962
2018/07/04
1.3K0
在Office应用中打开WPF窗体并且让子窗体显示在Office应用上
在.NET主程序中,我们可以通过创建 ExcelApplication 对象来打开一个Excel应用程序,如果我们想在Excle里面再打开WPF窗口,问题就不那么简单了。 我们可以简单的实例化一个WPF窗体对象然后在Office应用程序的窗体上打开这个新的WPF窗体,此时Office应用的窗体就是WPF的宿主窗体。然后宿主窗体跟Office应用并不是在一个UI线程上,子窗体很可能会在宿主窗体后面看不到。这个时候需要调用Win32函数,将Office应用的窗体设置为WPF子窗体的父窗体,这个函数的形式定义如下
用户1177503
2018/05/03
1.7K0
C# 窗体常用API函数 应用程序窗体查找
常用的处理窗体的API函数如下(注意:API函数必须放在窗体中...): 使用C#语言,要引用DllImport,必须要添加using System.Runtime.InteropServices命名空间 (1)获得当前前台窗体句柄 [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]public static extern IntPtr GetForegroundWindow(); 返回值类型是IntPtr,即为当前
逸鹏
2018/04/10
4K0
创建可调大小的用户窗体——使用Windows API
在使用VBA创建用户窗体时,通常会将其设置为特定的大小。然而,通过一些编码技巧,可以为其实现类似的调整大小效果。
fanjy
2023/08/29
4840
创建可调大小的用户窗体——使用Windows API
Excel用户窗体中添加最小化按钮及窗体最小化的代码实现
文章背景:用户窗体是Excel中的UserForm对象。在使用UserForm时,曾经目前遇到过两个问题。
Exploring
2022/08/10
2.5K0
Excel用户窗体中添加最小化按钮及窗体最小化的代码实现
窗体应用程序防腾讯QQ源码
窗体应用程序防腾讯QQ源码 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Text; 7 using System.Windows.Forms; 8 using Aptech.UI; 9 using System.Data.SqlCli
用户1112962
2018/07/04
1.7K0
windows 任何应用程序在 运行 里直接打开
    很多时候电脑的桌面 应用 icon 很多了,不方便找到也比较浪费时间,还有 有些 应用 icon 也许不想放在桌面上,如果能用命令方式打开 应用 那该多好。
卓越笔记
2023/02/18
9340
windows 任何应用程序在 运行 里直接打开
在Windows Mobile上隐藏你的应用程序
    有时候,我们需要在Windows Mobile上做一些invisible的应用程序,使得用户无法察觉。这几天找了一些资料,请教了Jake等一些朋友,下面就做一个简单的总结。 1. 如何逃脱“任
ShiJiong
2018/01/10
1.2K0
在Windows Mobile上隐藏你的应用程序
创建可维护和可测试的 Windows 窗体应用程序的 10 种方法(译)
我遇到的大多数 Windows 窗体应用程序都不存在或单元测试覆盖率极低。而且它们通常也很难维护,项目中各种 Form 类的代码背后有数百甚至数千行代码,但它不必是这样。仅仅因为 Windows 窗体是一项“遗留”技术,并不意味着你注定会造成无法维护的混乱。下面是创建可维护和可测试的 Windows 窗体应用程序的十个技巧。
沙漠尽头的狼
2021/12/15
1.3K0
Java Swing中的透明窗体(Windows中消息提示框的制作)
首先需要在工程中导包,需要用到JRE中的rt.jar包,我的JDK安装在C盘,目录如下:C:\Program Files\Java\jre7\lib\rt.jar。
卡尔曼和玻尔兹曼谁曼
2019/01/25
2.2K0
在Excel中创建悬浮图
步骤1:根据原始数据,整理用于创建图表的数据,如下图2所示。一个名为“隐藏”的列,计算出悬浮的高度,也就是前面显示的柱状的高度之后;一个名为“显示”的列,即绘制的可见柱状的高度。
fanjy
2023/10/05
6840
在Excel中创建悬浮图
Windows窗体应用类型的差异区别
最近在写小工具的时候,遇到一个坑点,项目的Debug/Release目录下一直有一个文件:项目名.runtimeconfig.json,还无法删除!删除了exe就跑不起来。
meteoric
2023/01/13
9300
Windows窗体应用类型的差异区别
使用ProcDump工具解决Windows应用程序崩溃
ProcDump是一个可以用于诊断多种问题点的命令行工具。和Dr.Watson、ADPlus以及DebugDiag一样,ProcDump可以在不期望的情况或者异常发生时,用于俘获一个进程的内存转储。而且也同ADPlus以及DebugDiag一样,它可以对一个挂起的应用程序强制进行进程转储。但和之前的任何工具不同的是,ProcDump可以在CPU的活动峰值达到一个指定的级别时,对一个进程进行转储。这对于那些间歇性的性能问题是特别有用的,对于这种问题,其发生是很难预测的。 ProcDump包括一个单独的可执行
张善友
2018/01/29
2.9K0
【VBA】在excel中检索文本
虽然在excel文件中检索的vba代码不知道写了多少遍了,每次需要的时候,都是从网上找,然后写。实在是低效的做法。从网上找了一段代码,放在此处,以后需要的时候可以随手拿来。
东风压倒西风
2022/09/06
2.9K0
在Excel中创建瀑布图
在Excel中很容易创建瀑布图,因为自Excel 2016就推出了瀑布图。然而,改变瀑布颜色稍微有点困难。
fanjy
2023/08/30
7230
在Excel中创建瀑布图
在Windows中劫持DLL
DLL劫持是一种用于执行恶意有效负载的流行技术,这篇文章列出了将近300个可执行文件,它们容易受到Windows 10(1909)上相对路径DLL劫持的攻击,并展示了如何使用几行VBScript绕过UAC可以以提升的特权执行某些DLL劫持。
Al1ex
2021/07/21
2.2K0
在Windows中劫持DLL
windows 应用程序在关机时的退出代号
在 windows 应用程序关闭的时候可以通过进程的 ExitCode 了解这个应用是如何关闭的
林德熙
2019/03/13
1.3K0

相似问题

如果模型不实现INotifyPropertyChanged,视图模型如何从其底层模型传播更改通知?

20

如何提取底层模型对象?

18

通知模型/模式

20

如何通知模型/视图底层数据更改了表标题?

11

如何引用django模型表单对象的底层模型?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文