使用width属性自动调整图像大小并将其保存在计算机上

时间:2011-10-27 09:24:13

标签: html css image image-resizing

问题:在设计网站时,我有时使用宽度:xxx;在图像上。这样我就可以调整图像了。但是,这会产生大小的开销。

解决方案:自动获取所有宽度为的图像:propery。将它们调整为:width属性保持尺寸。将文件另存为计算机上的.gif文件。

有谁知道一个好的解决方案?

2 个答案:

答案 0 :(得分:2)

你可以使用GD(如果你的php安装启用了GD或GD2) http://php.net/image

<?php
    function resizeImage($image,$width=null,$height=null){
        if(!$width and !$height) return false;
        $info = getimagesize($image);

        if(!$height) $height = $width/$info[0]*$info[1];
        if(!$width) $width = $height/$info[1]*$info[0];

        $new = newEmptyImage($width, $height);
        $resource = imagecreatefromgif($image);

        imagecopyresampled($new,$resource,0,0,0,0,$width,$height,$info[0],$info[1]);

        return imagegif($new,$image);
    }
    function newEmptyImage($width,$height){
        $new = imagecreatetruecolor($width,$height);
        imagealphablending($new, false);
        imagesavealpha($new, true);
        $bg = imagecolorallocatealpha($new,0,0,0,127);
        imagefill($new,0,0,$bg);

        return $new;
    }
?>

现在您只需拨打resizeImage("example.gif",120);

即可

答案 1 :(得分:1)

我编写了一段JavaScript代码,使用<canvas>通过调整大小的版本替换文档中的所有图像。 小提琴:http://jsfiddle.net/F2LK2/

function imageToFit(img) {
    var width = img.width;
    var height = img.height;
    var canvas = document.createElement('canvas');
    var context = canvas.getContext('2d');
    canvas.width = width;
    canvas.height = height;
    context.drawImage(img, 0, 0, width, height);
    img.parentNode.replaceChild(canvas, img);
}
window.onload = function(){
    var image = document.getElementsByTagName("img");
    for(var i=image.length-1; i>=0; i--){
        //Backwards, because we replace <img> by <canvas>
        imageToFit(image[i]);
    }
}

如果您对编写Canvas元素的脚本感兴趣,请查看Mozilla的Canvas tuturial