我可以毫无问题地使用.todataurl捕获完整的画布.但我没有看到或知道是否有任何方法只捕获画布的一部分并保存到图像.
ei Potatohead先生的脚本画出了整个画布上的帽子,手脚等等,你可以将它们拖放到画布中心的mr土豆上.按下按钮保存马铃薯先生的形象,为你寻找所有漂亮的jpgy.没有图像中所有额外的帽子/脚/面.
我已经让自己屈服于这样一个事实:根据我读过的所有内容,这是不可能的.但是你已经证明了人们比谷歌更聪明(或者至少谷歌在我手中),所以我正在拍摄.
对不起没有代码发布这个时间...除非你想要这个:
var canvas = document.getElementById("mrp");
var dataUrl = canvas.toDataURL();
window.open(dataUrl, "toDataURL() image", "width=800, height=600");
Run Code Online (Sandbox Code Playgroud)
但这只是我正在处理的数据的例子..它的作用超出了事实上它不仅限于土豆先生
我的后备是将图像传递给php并在那里使用它来删除我不想要的所有内容然后将其传回去.
编辑
tmcw有一个这样做的方法.不知道它应该怎么做,但它确实有效.
document.getElementById('grow').innerHTML="<canvas id='dtemp' ></canvas>";
var SecondaryCanvas = document.getElementById("dtemp");
var SecondaryCanvas_Context = SecondaryCanvas.getContext ("2d");
SecondaryCanvas_Context.canvas.width = 600;
SecondaryCanvas_Context.canvas.height = 600;
var img = new Image();
img.src = MainCanvas.toDataURL('image/png');
SecondaryCanvas_Context.drawImage(img, -400, -300);
var du = SecondaryCanvas.toDataURL();
window.open(du, "toDataURL() image", "width=600, height=600");
document.getElementById('grow').innerHTML="";
Run Code Online (Sandbox Code Playgroud)
grow是一个空的span标签,SecondaryCanvas是一个专为此创建的var SecondaryCanvas_Context是创建的SecondaryCanvas img的getcontext,用于存储包含Mr PotatoHead drawImage的主画布的.toDataURL(),带有负( - )偏移以移动图像MainCanvas,以便只显示我想要的部分.然后盖上刚创建的新画布并打开一个带有.png的新窗口
如果你从脚本中得到一个错误,说安全错误18因为你忘了将imgTop重命名为img,其余的变量你复制粘贴,当你试图保存像这样的本地内容图像时,chrome不喜欢它.
我正在使用正则表达式.从来没有完全理解它真正的问题是:是否有人有一个很好的网站,解释表达之间的差异,而不只是发布像
$regexp = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/";
Run Code Online (Sandbox Code Playgroud)
然后讨论整个线路的作用.而不是每个表达式将做什么.我已经尝试使用Google搜索许多不同版本的preg_replace和regex教程,但他们似乎都认为我们已经知道像\ b [^>]*会做什么.
二级.我试图这样做的原因:我想转
<span style="color: #000000">*ANY NUMBER*</span>
Run Code Online (Sandbox Code Playgroud)
成
<span style="color: #0000ff">*ANY NUMBER*</span>
Run Code Online (Sandbox Code Playgroud)
一些变种,我已经尝试过一些只是没有工作一些使脚本废话.
$data = preg_replace("/<span style=\"color: #000000\">([0-9])</span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);//just tried to match atleast 0-9
$data = preg_replace("/<span style=\"color: #000000\"\b[^>]*>(.*?)</span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);
$data = preg_replace("/<span style=\"color: #000000\"\b[^>]*>([0-9])</span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);
Run Code Online (Sandbox Code Playgroud)
这个具体问题的答案对我来说并不像一个网站那么重要,所以检查就是这样.尝试了很多不同的网站,我很确定它不高于我的理解我只是找不到一个好的所有坏教程/示例农场.W3和phpdotnet的正常回退不具备我这次需要的东西.
EDIT1对于那些最终在这里寻找类似答案的人:
$data = preg_replace("/<span style=\"color: #000000\">([0-9]{1,})<\/span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);
Run Code Online (Sandbox Code Playgroud)
做了它需要的东西.可悲的是,这是我尝试的第一件事之一,但因为我没有放</ span>而不是它不起作用,我不知道"[0-9] {1,}"是否是最合适的匹配方式number(告诉它匹配任何整数0-9与[0-9]至少一次,尽可能多次与{1,},它仍然适合目的)
ROY Finley发布时间:http: //www.macronimous.com/resources/writing_regular_expression_with_php.asp 它是一个很好的网站,有一个表达式定义列表和一个很好的示例后续工作.
另外:regular-expressions.info/tutorial.html发布了几次.它是一个更慢,更深入的步行,但如果你被卡住,我就是它的好.
在我有机会玩它们之后,会弹出regex101和解析器.
EDIT2 DWright在"掌握正则表达式"下面发布了一个书籍链接.如果你看一下正则表达式并且无法对字符的卷积做出正面或反面,那么它绝对值得一试.花了大约一个半小时来阅读大约一半,但这与谷歌花费的时间相比没有时间,并且用来避免它的乱七八糟的工作.
下面链接的html解析也适用于这个特定问题.