裁剪图像无论文件扩展名是什么

时间:2012-11-11 13:33:34

标签: jquery

HTML标记:

<div class="postbody">
<a href="#"><img src="http://1stimg.jpg?width=300"></a>
</div>
<div class="postbody">
<a href="#"><img src="http://2ndimg.jpeg?width=300"></a>
</div>
<div class="postbody">
<a href="#"><img src="http://3rdimg.png?width=300"></a>
</div>
<div class="postbody">
<a href="#"><img src="http://4thimg.gif?width=300"></a>
</div>

我使用下面的代码裁剪上面的图片,但它仅适用于第一张图片:

<script type="text/javascript">
$("div.postbody img").each(function() {
    var iu = this.src;
    iu = iu.substr(0, iu.indexOf('jpg')) + 'jpg?width=150&height=150&crop=1%3A1';
    this.src = iu;
});
</script>

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

更好地使用indexOf('.')代替indexOf('jpg'),无论价值多少。 为什么你只想把它修复为'jpg'? 你为什么不要求更小的图像呢?

答案 1 :(得分:0)

您正在替换所有源属性,无论它是否与扩展名匹配。

在执行替换之前检查正确的扩展名:

$(function() {
    $("div.postbody img").each(function() {
        var iu = this.src;
        if (iu.indexOf('jpg')!=-1) {
            iu = iu.substr(0, iu.indexOf('jpg')) + 'jpg?width=150&height=150&crop=1%3A1';
            this.src = iu;
        }
        else if (iu.indexOf('jpeg')!=-1) {
            iu = iu.substr(0, iu.indexOf('jpeg')) + 'jpeg?width=150&height=150&crop=1%3A1';
            this.src = iu;
        }
    });
});