我收到错误消息:
"Domado: canvas drawImage not yet implemented"
在浏览器控制台中使用Apps脚本中的代码,否则将在浏览器中使用。
这是HTML和Javascript代码,它可以工作,并做我想要的。相同的代码在Apps脚本HTML服务中不起作用。
<button onmouseup="fncDrawNewImage()">Put Image Into Canvas</button>
<span style='color:red'>NOTE: Large Image. Scroll Down to see New Image<span>
<br/>
<br>
<img id='rawUploadImg' src="https://c63b5816896b8b38120d71a4eb99978894a5ef14.googledrive.com/host/0B52YKjuEE44ySkhPUTBsbW5sSWM/F28_003537_KPQQAPSQQQQQT0Bw_A.JPG">
<canvas id="cnvsForFormat" width="400" height="226"></canvas>
window.fncDrawNewImage = function () {
window.img = document.getElementById("rawUploadImg");
var cnvs = document.getElementById("cnvsForFormat");
var ctx = cnvs.getContext("2d");
cnvs.style.border = "1px solid #c3c3c3";
ctx.drawImage(img, 0, 0, 400, 226);
};
jsFiddle put IMG into a CANVAS with drawImage
在Apps脚本中,每行都有效,除了:
ctx.drawImage(img, 0, 0, 400, 226);
Apps Script HTML Service中是否不允许drawImage
或尚未实现?{1}}在画布中绘制图像时,可以减小图像大小。这就是我想要完成的事情。如果有人知道如何减少Apps脚本中的图像大小,我肯定想知道。 (不要减少HTML中的DISPLAY大小,减小实际的字节大小)
我想知道我是否可以将图像文件发送到.gs
代码,将其转换为字符串,将其发回,然后将其放入画布或图像标记中?
答案 0 :(得分:1)
Apps脚本现在有一个名为IFRAME的新sandboxMode:
function doGet() {
var template = HtmlService.createTemplateFromFile('Index');
// Build and return HTML in IFRAME sandbox mode.
return template.evaluate()
.setTitle('Compress Image')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
};
现在允许ctx.drawImage()
<form>
<input type="file" accept="image/*" onchange="fncChangeSize(this.files[0], newWidth, newHeight)" >
</form>
<canvas id="cnvsForFormat" width="400" height="266" style="border:1px solid #c3c3c3"></canvas>
<script>
window.fncChangeSize = function(imageData, newWidth, newHeight) {
console.log("fncChangeSize ran: " + frmData);
var cnvs=document.getElementById("cnvsForFormat");
var img = new Image;
img.src = URL.createObjectURL(imageData);
var ctx=cnvs.getContext("2d");
ctx.drawImage(img,0,0, newWidth, newHeight);
};
</script>
答案 1 :(得分:-1)
drawImage无法使用谷歌应用脚本