有沒有可能在客戶端更改圖片的分辨率(使用CSS,Javascript,不管),但保持它的大小在屏幕上?更改圖片分辨率,但保持實際尺寸
例如:我想顯示分辨率爲20x10的尺寸爲200x100的1920x1080圖像。只需使用一個img元素,將其源和寬/高設置爲20x10肯定可行,但現在我想顯示尺寸爲200x100的縮放圖像。
難道這是不可能在服務器端生成一個新的圖像嗎?
有沒有可能在客戶端更改圖片的分辨率(使用CSS,Javascript,不管),但保持它的大小在屏幕上?更改圖片分辨率,但保持實際尺寸
例如:我想顯示分辨率爲20x10的尺寸爲200x100的1920x1080圖像。只需使用一個img元素,將其源和寬/高設置爲20x10肯定可行,但現在我想顯示尺寸爲200x100的縮放圖像。
難道這是不可能在服務器端生成一個新的圖像嗎?
爲此,您可以使用HTML5的畫布:
既然你想給一個尺寸的200
X 200
和50
分辨率X 50
任何尺寸的原稿圖像:
50
x 50
50
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/";
在畫布內繪製圖像並使用它的數據,因爲新的圖像源是我已經想到的解決方案。但首先我猜這是如此緩慢,當然使用瀏覽器需要支持的畫布來支持HTML5 – user1039407 2012-01-01 20:57:27
@ user1039407:如果你想要兼容,你最好在服務器端進行。如果將分辨率設置得較低,則不會很慢,因爲畫布上必須繪製相對較少的像素(通過CSS設置寬度似乎不會影響性能)。 – pimvdb 2012-01-01 20:59:20
但是由於需要多次調用該方法,因此計算映像的時間將會過長。不過,使用畫布並在舊版瀏覽器上禁用該功能將是最佳解決方案。 但是不存在其他可能性嗎?例如,顯示大小爲50的圖像元素,並以某種方式調整其內容的大小而不被「重繪」? – user1039407 2012-01-01 21:14:22
那麼最終的圖像看起來像素化? – Duopixel 2012-01-01 20:43:38
你的意思是重新採樣和調整大小? – Joseph 2012-01-01 20:52:20
看到這裏:http://stackoverflow.com/questions/2369788/pure-javascript-image-handling-library-in-binary-form-not-through-dom它似乎有客戶端支持圖像處理已經。 – Joseph 2012-01-01 20:53:30