图像未裁剪为正确尺寸

Posted

技术标签:

【中文标题】图像未裁剪为正确尺寸【英文标题】:Images not Cropped to correct size 【发布时间】:2015-07-09 14:19:27 【问题描述】:

此 jquery 脚本可以通过调整图像 url 来裁剪任何图像以正确大小。这是我为特定 div/元素的裁剪图像找到的唯一的网络 Jquery 脚本。问题是脚本突然无法将图像裁剪为正确的大小,脚本的宽度-高度变量为var w = 200var h = 150 但问题是 width 变量不起作用,裁剪图像的高度和宽度变成了同样的大小。意味着只有高度变量有效,输出裁剪图像变为 150px X 150px它应该是 200px X 150px。

JS:

var w = 200;
var h = 150;
$('.crop').find('img').each(function(n, image)
  var image = $(image);
  image.attr(src : image.attr('src').replace(/s\B\d2,4/,'s' + w + '-h' + h +'-c'));
  image.attr('width',w);
  image.attr('height',h);
 );

问题Fiddle > 注意:我使用的是最新的 chrome,但它不工作,版本 43.0.2357.130,也不能在最新的 Firefox 中工作。请使用 Inspect 元素 [Shift+Ctrl+I] 查看原始大小或下载裁剪后的图像。

我找不到任何原因/问题为什么图像不能裁剪为正确尺寸?解决方案是什么?请帮忙 :( 提前致谢。

【问题讨论】:

在 attr() 中使用 是错误的 @Bhojendra Nepal 我该怎么办?请拉小提琴。 image.attr('src' , image.attr('src').replace(/s\B\d2,4/,'s' + w + '-h' + h +'-c')); @Bhojendra Nepal 谢谢,但不起作用,请参阅小提琴:jsfiddle.net/r7fyqxpa/5 @Aabira 看看我的回答,是你想要的吗? 【参考方案1】:

我找到了topic,并进行了一些测试,

然后我发现s200-h150-c 看起来很奇怪

所以我替换

image.attr(src : image.attr('src').replace(/s\B\d2,4/,'s' + w + '-h' + h +'-c'));

image.attr(src : image.attr('src').replace(/s\B\d2,4/,'w' + w + '-h' + h +'-c'));

s200-h150-c 变成w200-h150-c,它就可以工作了。不确定原始帖子是否有错字或功能已更改。

var w = 200;
var h = 150;
$('.crop').find('img').each(function(n, image)
  var image = $(image);
  image.attr('src' , image.attr('src').replace(/s\B\d2,4/,'w' + w + '-h' + h +'-c'));
  image.attr('width',w);
  image.attr('height',h);
 );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Please save the croped Image for see the actual result.
<br/><br/>
1) After Crop (Result: 150px X 150px ) 
<br><br>
<div class="crop">
<img src="http://1.bp.blogspot.com/-R7XPICyjSZA/VRaUCQteV1I/AAAAAAAABLc/PSsERo55dIg/s1600/artworks-000103151765-uxzfpd-t500x500.jpg"/>
</div>
<br/><br/>
2) After Crop (Result: 150px X 150px )
<br/><br/>
<div class="crop">
<img src="http://4.bp.blogspot.com/-YTDvE4-4L0o/VIkaNloCRCI/AAAAAAAAAu0/8Q0MkvJyGZE/s1600/pc-type65756.jpg"/>
</div>
<br/>

【讨论】:

【参考方案2】:

您在 attr 方法中使用了大括号 ,这是不允许使用的,因为 attr 不接受对象 作为参数。

所以,你可以改成:

image.attr(src : image.attr('src').replace(/s\B\d2,4/,'s' + w + '-h' + h +'-c'));

有了这个:

image.attr('src' , image.attr('src').replace(/s\B\d2,4/,'s' + w + '-h' + h +'-c'));

但更好的解决方案是这样使用:

image.attr('src' , function(i,v)
   return v.replace(/s\B\d2,4/,'s' + w + '-h' + h +'-c'));
);

您可以使用css 来设置宽度和高度,如下所示:

image.css('width':w,'height':h);

【讨论】:

我的意思是使用 jquery 的 css() 方法。抱歉,由于我的互联网连接速度很慢,因此无法创建/查看 jsfiddle。 -谢谢,请给小提琴。 好的,亲爱的,谢谢你的尝试。

以上是关于图像未裁剪为正确尺寸的主要内容,如果未能解决你的问题,请参考以下文章

如何在裁剪前不修剪的情况下以小形式裁剪大图像?

将位图图像裁剪为自定义正方形

JCrop 无法正确裁剪图像

Xamarin SyncFusion,裁剪图像未正确传递?

裁剪图像并将其调整为特定尺寸

WordPress - 使用原始图像,未裁剪