gpt4 book ai didi

javascript - JS Canvas 在各个方向上调整大小

转载 作者:行者123 更新时间:2023-12-03 04:45:00 24 4
gpt4 key购买 nike

我正在尝试在各个方向上调整 Canvas 的大小 the way Photoshop does .

我尝试使用 JS,但它与我从 Photoshop CC Canvas 大小功能获得的输出不匹配。

原始图像 (600 x 439):/image/5IHvs.jpg

使用 JS 代码调整大小 (580 x 430):/image/kDaWl.png

使用 Photoshop CC 调整大小(图像 -> Canvas 大小)(580 x 430):/image/WTCCp.jpg

var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var x = 0;
var y = 0;
var width = 580;
var height = 430;

var imageObj = new Image();
imageObj.onload = function() {
context.drawImage(imageObj, x, y, width, height);
};
imageObj.src = '/image/5IHvs.jpg';
<body>
<canvas id="myCanvas" width="580" height="430"></canvas>
</body>

那么,知道如何像 Photoshop CC 那样在各个方向上调整 Canvas 大小,以便它可以与 Photoshop CC 的输出相匹配。

JSFiddle:https://jsfiddle.net/f2L4b942/

最佳答案

您所要求的只是裁剪图像,但将 anchor 保持在中间。

这很容易实现:
drawImagexy参数设置为所需尺寸与原始尺寸之间的差值除以2。

var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var requiredWidth = canvas.width = 580;
var requiredHeight = canvas.height = 430;
var img = new Image();

img.onload = function() {
// all you need is here
var offsetX = (requiredWidth - img.naturalWidth) / 2;
var offsetY = (requiredHeight - img.naturalHeight) / 2;

context.drawImage(img, offsetX, offsetY, img.naturalWidth, img.naturalHeight);
};
img.src = 'http://i.imgur.com/rXURSWC.jpg';
<canvas id="myCanvas" width="580" height="430"></canvas>

关于javascript - JS Canvas 在各个方向上调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42902117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com