Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算图像比率并将值应用于查询字符串_Javascript_Jquery - Fatal编程技术网

Javascript 计算图像比率并将值应用于查询字符串

Javascript 计算图像比率并将值应用于查询字符串,javascript,jquery,Javascript,Jquery,我有下面的代码,它从裁剪器工具获取结果图像的尺寸,并基于高度/宽度分割的结果,生成一个用作图像纵横比的值。然后将此值插入查询字符串url:urlLocation+imageid.value+“/orientation/”+orientation+“/image/”+saveImage,。问题在于,查找图像比率的逻辑操作不正确,将所有裁剪的图像(无论是方形(高度=宽度)、纵向还是横向)视为“方形” $submitButton=$('') .text('Submit'+imageid.value).

我有下面的代码,它从裁剪器工具获取结果图像的尺寸,并基于高度/宽度分割的结果,生成一个用作图像纵横比的值。然后将此值插入查询字符串
url:urlLocation+imageid.value+“/orientation/”+orientation+“/image/”+saveImage,
。问题在于,查找图像比率的逻辑操作不正确,将所有裁剪的图像(无论是方形(高度=宽度)、纵向还是横向)视为“方形”

$submitButton=$('')
.text('Submit'+imageid.value).appendTo($(“.Submit well”))
.on('单击',函数(){
//var USERNAME=“bob”;
//var PASSWORD=“bobpass”;
var urlLocation=”http://www.url.com/rest/v1/cms/story/";
var saveImage=encodeURIComponent(dataUrl);
//如果必须手动选择方向,则使用此选项
//var-orientation=$(“#orientation”).val();
//
var resultHeight=$(“#result”).height();
var resultWidth=$(“#结果”).width();
var divide=resultHeight/resultWidth;
var精度=除以固定值(1);
如果(精度==1.77){
方向=“纵向”;
} 
如果(精度==0.56){
方向=“景观”;
} 
if(resultHeight==resultWidth){
方向=“方形”;
控制台日志(定向);
}
$.ajax({
方法:“放”,
数据类型:“jsonp”,
/*标题:{
“授权”:“基本”+btoa(用户名+:“+密码)
},*/
url:urlLocation+imageid.value+“/orientation/”+orientation+“/image/”+saveImage,
/*数据:{
imageid:imageid.value,
方向:方向,,
image:saveImage,
},*/
成功:功能(数据){
$(“.share link”).html(“Success!”+imageid.value+”已发布。

”; 控制台日志(数据); }, 错误:函数(数据){ $(“.share link”).html(“无法发送照片:“+imageid.value+”

”; } }); });
您的代码包含大量对项目的引用,因此我无法真正测试它。
然而,如果我要找到一个可能的原因,我会说这是在测试
精度
是否相等的行中

您可能还记得,黄金法则是永远不要比较两个浮点数是否相等。由于浮点存储在内存中的方式(以指数表示法),这可能会导致意外的结果。
例如,此代码将返回
false

console.log(0.1 + 0.2 == 0.3)
问题是您首先使用
.toFixed()
将浮点值(正确地)转换为字符串。但是,然后将结果字符串与浮点进行比较,这意味着JavaScript将把字符串重新转换为浮点,而两个浮点之间的比较是不可靠的

因此,将线路替换为:

var precision = divide.toFixed(2);
if (precision == '1.77') {
    orientation = "PORTRAIT";
} 
else if(precision == '0.56') {
    orientation = "LANDSCAPE";
} 
else if(resultHeight === resultWidth){
    orientation = "SQUARE";
}
console.log(orientation);
(我还使用了
else if
而不是更多的
if
。此外,您可能希望处理方向为空的情况)

附言 我同意曼哈顿先生对你问题的评论。通常情况下,你不需要得到精确的纵横比。只需检查三种情况:

  • 如果
    width>height
    ,则是横向的
  • 否则,如果宽度<高度,则为纵向
  • 否则它是正方形的(如果(宽度==高度),则无需检查
    else
    ,因为如果它既不大于也不小于,则它必须相等)

您的代码包含大量对项目的引用,因此我无法真正测试它。
然而,如果我要找到一个可能的原因,我会说这是在测试
精度
是否相等的行中

您可能还记得,黄金法则是永远不要比较两个浮点数是否相等。由于浮点存储在内存中的方式(以指数表示法),这可能会导致意外的结果。
例如,此代码将返回
false

console.log(0.1 + 0.2 == 0.3)
问题是您首先使用
.toFixed()
将浮点值(正确地)转换为字符串。但是,然后将结果字符串与浮点进行比较,这意味着JavaScript将把字符串重新转换为浮点,而两个浮点之间的比较是不可靠的

因此,将线路替换为:

var precision = divide.toFixed(2);
if (precision == '1.77') {
    orientation = "PORTRAIT";
} 
else if(precision == '0.56') {
    orientation = "LANDSCAPE";
} 
else if(resultHeight === resultWidth){
    orientation = "SQUARE";
}
console.log(orientation);
(我还使用了
else if
而不是更多的
if
。此外,您可能希望处理方向为空的情况)

附言 我同意曼哈顿先生对你问题的评论。通常情况下,你不需要得到精确的纵横比。只需检查三种情况:

  • 如果
    width>height
    ,则是横向的
  • 否则,如果宽度<高度,则为纵向
  • 否则它是正方形的(如果(宽度==高度),则无需检查
    else
    ,因为如果它既不大于也不小于,则它必须相等)

您的代码包含大量对项目的引用,因此我无法真正测试它。
然而,如果我要找到一个可能的原因,我会说这是在测试
精度
是否相等的行中

您可能还记得,黄金法则是永远不要比较两个浮点数是否相等。由于浮点存储在内存中的方式(以指数表示法),这可能会导致意外的结果。
例如,此代码将返回
false

console.log(0.1 + 0.2 == 0.3)
问题是您首先使用
.toFixed()
将浮点值(正确地)转换为字符串。然而,y