У меня есть изображение, и я хочу нарисовать поверх него квадрат. Но я продолжаю получать неопределенные функции на getContext('2d')
. Я должен добавить, что var img - это изображение, которое уже загружено на страницу, я пытаюсь интерпретировать его как холст, так как я использую другой скрипт, который позволяет выбирать области на изображении, и если я использую холст, скрипт не будет работать. Итак, в случае, когда я не могу интерпретировать изображение как холст, что бы вы предложили?Использование изображения вместо холста
Js функция
function drawInput(dx1,dy1,dx2,dy2) {
var img = document.getElementById('home:tempImg');
var canvas = img;
console.log(canvas);
var context = canvas.getContext('2d');
var imageObj = new Image();
imageObj.onload = function() {
context.drawImage(imageObj, dx1, dy1,dx2-dx1,dy2-dy1);
};
imageObj.src = 'images/selected.png';
}
HTML
<h:body>
<h:form onsubmit="#{getComponents.getAllComponents()}" id="home">
<div>
<p:graphicImage id="tempImg" rendered="true" value="#{imageView.selectedImg}">
</p:graphicImage>
</div>
</h:form>
</h:body>
<script type="text/javascript">
var myJSONStr ='{ "area" : #{areaInputView.areaListString}}';
console.log(myJSONStr);
var json = JSON.parse(myJSONStr);
//console.log(json.area[1].x1);
for(var i=0;myJSONStr.length >i ; i++) {
console.log(json.area[i].x1, json.area[i].y1, json.area[i].x2, json.area[i].y2);
drawInput(json.area[i].x1, json.area[i].y1, json.area[i].x2, json.area[i].y2);
};
</script>
</html>
Думаю, вам придётся придумать новый подход. AFAIK вы не можете использовать 'img' как' canvas'. Вы можете сделать изображение внутри холста. Это будет немного больше работы, и вам нужно будет найти способ доступа к '# {imageView.selectedImg}' внутри скрипта; но это определенно возможно. Я бы предложил пересмотреть ваш подход. –
Эй, Джордан, спасибо за ответ. Разве вы не можете рассмотреть размеры изображения и нарисовать еще один поверх него, но в границах первых размеров изображения? – FancyPants
Вы можете определенно сделать это - я не сразу понимаю, как это сделать, но взгляните на документы MDN вокруг [HTMLImageElement] (https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement) и [Canvas.drawImage] (https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Using_images#Drawing_images). Захватите ссылку на исходное изображение и используйте его свойства как границы. Если я найду время сегодня, я попробую и выпью пример для вас. –