2012-01-01 10 views
1

(CSS、JavaScriptなどを使用して)クライアント側で画像の解像度を変更する可能性はありますか?画像の解像度を変更しますが、物理的なサイズを維持してください

例:200x100のサイズで解像度20x10の1920x1080イメージを表示したいとします。 img要素を使用するだけで、ソースと幅/高さを20x10に設定することは確実ですが、今では200x100のサイズで拡大画像を表示したいと思います。

サーバー側で新しい画像を生成せずに何とかできますか?

+0

最終画像はピクセル化されて見えるでしょうか? – Duopixel

+0

リサンプリングとサイズ変更を意味しますか? – Joseph

+0

ここをクリックしてください:http://stackoverflow.com/questions/2369788/pure-javascript-image-handling-library-in-binary-form-not-through-domイメージ処理ではクライアントサイドのサポートが既にあるようです。 – Joseph

答えて

1

あなたはHTML5のキャンバスを使用してこれを行うことができます:あなたは200 X 200の大きさと50 X 50の解像度を提供したい任意のサイズの元画像を考えると

  1. メイク50 X 50
  2. のキャンバスは50
  3. 拡大目の幅と高さを定義する引数を持つ画像を描画しますeキャンバス〜CSS200 x 200に伸ばします。

このように:http://jsfiddle.net/eGjak/234/

補足として、HTML5キャンバスはすべてのブラウザでアンチエイリアスを使用していますが、これをオフにする機能はありません。そのため、ピクセル化された結果の代わりに、結果がぼやけてしまいます。

// paint 200x200 image with resolution 50x50 
var w = 200, 
    h = 200, 
    p = 50, 
    q = 50; 

var img = $("img").get(0); 

img.onload = function() { 
    cv.width = p; // set canvas resolution 
    cv.height = q; 

    ctx.drawImage(img, 0, 0, p, q); // draw image with given resolution 

    cv.style.width = w + "px"; // enlarge canvas by stretching 
    cv.style.height = h + "px"; 
}; 

img.src = "http://www.lorempixum.com/300/300/"; 
+0

イメージをキャンバス内に描画し、新しいイメージソースとしてデータを使用するのは、私がすでに考えていたソリューションです。しかし、まずは非常に遅く、もちろんブラウザがHTML5をサポートするために必要なキャンバスを使用していると思います。 – user1039407

+0

@ user1039407:互換性を取りたい場合は、サーバー側で行うのがよいでしょう。解像度を低く設定すると、キャンバスに比較的少数のピクセルを塗りつぶす必要があるので、遅くなることはありません(CSSを使った幅の設定はパフォーマンスヒットにはならない)。 – pimvdb

+0

しかし、メソッドを複数回呼び出す必要があるため、画像の分割を計算するには時間がかかりすぎます。キャンバスを使用して古いブラウザで機能を無効にするのが最適な解決策です。 他の可能性はありますか?例えば、50.2のサイズの画像要素を表示し、何らかの形で「再描画」せずにコンテンツのサイズを変更しますか? – user1039407

関連する問題