【发布时间】:2016-04-26 03:31:24
【问题描述】:
我正在努力根据他们的网站示例调用 ImageAreaSelect 并获取原始图像尺寸参数以正确缩放裁剪选择。可用的裁剪区域是容器的全宽(我宁愿是图像宽度),并且我在 css 中使用了一个 max-width 参数来将加载的文件宽度限制为小于容器。有很多重新缩放选择器的示例,但是如何获得原始宽度和高度?我正在成功保存打开的文件名,以便以后在单独的画布上进行 js 像素操作,但是如果加载了超大的图像,则必须重新调整选择结果。
HTML:
<div class="container demo">
<div style="float: left; width: 50%;">
<div class="frame" style="margin: 0 0.3em; width: 800px; height: 800px;">
<input type="file" id="file"/>
<br />
<div id="view"> Your image will load here</div>
</div>
</div>
</div>
CSS:
.imgContainer img { max-width: 600px;}
js:
function preview(img, selection) {
if (!selection.width || !selection.height)
return;
// or do some conditional scaling here if image is large
x_1 = selection.x1; //I use these globals elsewhere for pixel calcs
y_1 = selection.y1;
S_wid = selection.width;
S_hei = selection.height;
L = Math.floor((S_wid * S_hei) / 4096); //4-bit ave color density
}
$(function () {
$('#view').imgAreaSelect({
handles: true,
fadeSpeed: 200,
// imageHeight: originalHeight, //how to get these, or do elsewhere?
// imageWidth: originalWidth,
onSelectChange: preview
});
});
$(window).load(function () {
$('#file').change(function () {
var oFReader = new FileReader();
oFReader.readAsDataURL(this.files[0]);
console.log(this.files[0]);
oFReader.onload = function (oFREvent) {
$('#view').html('<img src="' + oFREvent.target.result + '">');
fname = oFREvent.target.result; //global, used later elsewhere
// some way to get original image sizes here, or do elsewhere?
};
});
});
我一直在尝试很多建议的解决方案,但无法让任何东西正常工作。 .width() js 函数中的调用只返回容器宽度。在getElementById 之后的.naturalWidth 调用是未定义的,除非我有一个明确定义的img ID 和src="some file"。我不知道如何获取或定义在 jquery 中以这种方式打开的文件的 img ID。希望我在这里缺少一些简单的东西。提前感谢您的帮助。
【问题讨论】:
标签: javascript jquery