Có hàng trăm hướng dẫn, cách có thể cắt hình ảnh bằng drawImage() trên canvas.Cắt xén vải/Xuất khẩu vải html5 với chiều rộng và chiều cao nhất định
context.drawImage(imageObj, sourceX, sourceY, sourceWidth, sourceHeight, destX, destY, destWidth, destHeight);
Tuy nhiên, tôi có khung vẽ đầy trình duyệt của người dùng. Bằng cách xuất khung hình làm hình ảnh, tôi chỉ muốn xuất một vùng có kích thước 640px * 480px từ (0 | 0).
Sự cố: Làm cách nào tôi có thể yêu cầu javascript chỉ sử dụng 640 * 480 canvas cho toDataURL()?
Dưới đây là những gì tôi có cho đến nay:
$("#submitGraphic").click(function(){
var canvas = document.getElementsByTagName("canvas");
// canvas context
var context = canvas[0].getContext("2d");
// get the current ImageData for the canvas
var data = context.getImageData(0, 0, canvas[0].width, canvas[0].height);
// store the current globalCompositeOperation
var compositeOperation = context.globalCompositeOperation;
// set to draw behind current content
context.globalCompositeOperation = "destination-over";
//set background color
context.fillStyle = "#FFFFFF";
// draw background/rectangle on entire canvas
context.fillRect(0,0,canvas[0].width,canvas[0].height);
// not working, seems to clear the canvas? browser hangs?
// seems that I can click a white image in the background
/*canvas[0].width = 640;
canvas[0].height = 480;*/
// not working either
/*canvas[0].style.width = '640px';
canvas[0].style.height = '480px';*/
// not working at all
/*context.canvas.width = 640;
context.canvas.height = 480;*/
// write on screen
var img = canvas[0].toDataURL("image/png");
document.write('<a href="'+img+'"><img src="'+img+'"/></a>');
})
PS: Tôi không muốn thay đổi kích thước hoặc quy mô, chỉ cần cắt/cắt vào cửa sổ cố định. Here Tôi đọc rằng bạn chỉ xác định canvas.width và canvas.height - nhưng điều này sẽ xóa canvas.
Tuyệt vời, hoạt động rất tốt!/Điều duy nhất kích thích tôi là Firefox cho biết tải trang (tab hiển thị vòng tròn quay) khi hình ảnh đã xuất hiện. Nhấp ESC cho thấy wyciwyg: // trong url? ... "wyciwyg là một lược đồ URI nội bộ được sử dụng để đại diện cho các trang kết quả document.write"/Nhưng dù sao, hạnh phúc là bạn đã cho tôi một giải pháp làm việc! –
biến "dữ liệu" được gán nhưng không bao giờ được sử dụng ... –
cũng như biến compositeOperation –