2012-01-01 88 views
1

有沒有可能在客戶端更改圖片的分辨率(使用CSS,Javascript,不管),但保持它的大小在屏幕上?更改圖片分辨率,但保持實際尺寸

例如:我想顯示分辨率爲20x10的尺寸爲200x100的1920x1080圖像。只需使用一個img元素,將其源和寬/高設置爲20x10肯定可行,但現在我想顯示尺寸爲200x100的縮放圖像。

難道這是不可能在服務器端生成一個新的圖像嗎?

+0

那麼最終的圖像看起來像素化? – Duopixel 2012-01-01 20:43:38

+0

你的意思是重新採樣和調整大小? – Joseph 2012-01-01 20:52:20

+0

看到這裏:http://stackoverflow.com/questions/2369788/pure-javascript-image-handling-library-in-binary-form-not-through-dom它似乎有客戶端支持圖像處理已經。 – Joseph 2012-01-01 20:53:30

回答

1

爲此,您可以使用HTML5的畫布:

既然你想給一個尺寸的200 X 20050分辨率X 50任何尺寸的原稿圖像:

  1. 做一個畫布50 x 50
  2. 用定義寬度和高度的參數繪製圖像50
  3. 放大第e canvas through CSS to stretch it to 200 x 200

喜歡這個:http://jsfiddle.net/eGjak/234/

作爲一個附註,HTML5 canvas在所有瀏覽器中都使用了抗鋸齒技術,就我而言,無法將其關閉。所以,而不是像素化的結果,你會有模糊的結果。

// 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 2012-01-01 20:57:27

+0

@ user1039407:如果你想要兼容,你最好在服務器端進行。如果將分辨率設置得較低,則不會很慢,因爲畫布上必須繪製相對較少的像素(通過CSS設置寬度似乎不會影響性能)。 – pimvdb 2012-01-01 20:59:20

+0

但是由於需要多次調用該方法,因此計算映像的時間將會過長。不過,使用畫布並在舊版瀏覽器上禁用該功能將是最佳解決方案。 但是不存在其他可能性嗎?例如,顯示大小爲50的圖像元素,並以某種方式調整其內容的大小而不被「重繪」? – user1039407 2012-01-01 21:14:22