2011-10-27 11 views
3

問題:ウェブサイトを設計するときに、時々幅:xxxを使用しました。画像にそうすれば、私は画像を調整することができました。しかし、それはサイズのオーバーヘッドを作ります。自動的に幅プロパティでイメージのサイズを変更し、コンピュータに保存します。

解決方法:自動的に幅:正味のすべての画像を取得します。大きさを保持してwidthプロパティにリサイズします。ファイルを.gifとしてコンピュータに保存します。

良い解決法を知っている人はいますか?

(あなたはGDやGD2は、PHPのインスタレーションで有効になっている場合)あなたはGDを使用してそれを行うことができます
+2

これはjavascriptよりも優れたプログラミング言語を必要とします。 –

+2

@SamuelLiew - PHPをタグとして追加することは、OPが要件をこれに限定していない場合、すべての回答がPHPソリューションになることを意味します。私はOPがプログラミング言語に言及していないと思うなら、あなたはPHPソリューションで答えるのは自由であるべきですが、PHPになるように質問を変更しないでください。 – Curt

+0

@DanBizdadea JavaScriptはCanvasまたはSVGを使用して画像を操作することもできます。 –

答えて

2

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; 
    } 
?> 

今、あなたは単に私のJavaScriptの作品を書いたresizeImage("example.gif",120);

1

を呼び出すことができます<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]); 
    } 
} 

、MozillaのCanvas tuturialを見ています。

+0

私は問題の一部は、クライアント側が依然としてフルサイズの大きな画像を取得しなければならないことと、サイズの小さい画像をフェッチ、サイズ変更、保存して、 。私は質問のポイントを逃したかもしれません。 :) – Chris

+0

@Chris OPは明示的に質問に 'JavaScript'タグを追加しました。私はその質問を次のように解釈しました。「ユーザーが自分の画像を保存すると、表示される画像のサイズが正確になります。 –

+0

真。私は "しかし、それはサイズのオーバーヘッドを作成する"を見ていた。私はそれを移転のバウンスオーバーヘッドとして心配していると解釈した。あなたはうまくいくかもしれません。私は今それを心配するためにOPにそれを残すでしょう。 :) – Chris

関連する問題