如何在文件打开和调用图像区域选择时获取原始图像大小
how to get original image size when file opening and calling imageareaselect
我正在努力根据他们的网站示例调用 ImageAreaSelect 并获取原始图像大小参数以正确缩放裁剪选择。 可用的裁剪区域是容器的整个宽度(我宁愿它是图像宽度),并且我在 css 中使用了最大宽度参数将加载的文件宽度限制为小于容器。 有很多重新缩放选择器的示例,但是如何获得原始宽度和高度? 我正在成功保存打开的文件名,以便以后在单独的画布上进行 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?
};
});
});
我一直在尝试很多建议的解决方案,但无法让任何东西正常工作。 js 函数中的.width()
调用只返回容器宽度。 getElementById
后面.naturalWidth
调用是未定义的,除非我有一个定义良好的 img ID 和 src="some file"
. 我不知道如何获取或定义在jquery中以这种方式打开的文件的img ID。 希望我在这里缺少一些简单的东西。 提前感谢任何帮助。
如果我
理解正确,naturalWidth
不起作用,因为现在从图像中获取该信息还为时过早。您可以尝试等到图像加载完毕,然后更新imgAreaSelect(我检查了他们的文档,他们有设置选项的方法),例如
代码块将从以下位置更改:
$('#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?
像这样:
var $img = jQuery('<img src="' + oFREvent.target.result + '">')
.on('load', function(){
// The image's data will be available now,
// so update imgAreaSelect with the new values.
var iAS = $('#view').imgAreaSelect({ instance: true });
iAS.setOptions({
handles: true,
fadeSpeed: 200,
imageHeight: this.naturalHeight,
imageWidth: this.naturalWidth,
onSelectChange: preview
});
});
$('#view').html($img);
fname = oFREvent.target.result; //global, used later elsewhere
我不确定imgAreaSelect的setOptions
方法是如何工作的,如果我们需要重新声明原始选项或什么,所以你可能不需要重新设置handles
,fadeSpeed
等。
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 从手机中选择多个图像'使用phonegap的多媒体资料
- 修复选择菜单时的背景图像
- 是否可以仅通过jQuery将图像替换为用户动态选择的另一个图像
- 选择文件后显示图像
- ImageMapster可以动态显示和隐藏图像选择崩溃
- 为什么图像选择器程序中的这个函数 js 不起作用
- 如何在钛应用程序中使图像选择区域更大
- 基于CSS/Javascript的图像选择器
- TinyMCE:鼠标上的图像选择(wordpress/contentreditable)
- Javascript图像选择器:防止一次又一次地选择相同的图像
- 根据图像选择显示新图像
- TinyMCE图像上传API不显示图像选择器图标
- For循环对图像选择器不起作用
- 跳过验证多个图像选择
- HTML5多图像选择限制和编辑
- 图像选择器不工作
- Javascript/JQuery图像选择器
- 检查图像是否具有标题属性,然后应用于图像选择器
- 忽略图像选择