javascript PNG操作 (javascript PNG manipulation)


問題描述

javascript PNG操作 (javascript PNG manipulation)

我正在製作一個玩紙牌遊戲的網站。卡片的圖像以一個大的 PNG 文件從服務器下載。在客戶端,使用 javascript,我想製作多個元素,每張卡片一個。

var cards = new Array(number of cards);
var request = new XMLHttpRequest();
request.responseType    = "arraybuffer";
//alternatively: request.responseType    = "blob";

request.onreadystatechange = function(){
    var arrayBuffer = this.respons;

    //how do I cut up the arrayBuffer such that i can use something like:

    var urlCreator = window.URL || window.webkitURL;
    var imageUrl = urlCreator.createObjectURL( cards[3] );

    var img = document.getElementById("img");
    img.src = imageUrl;

}
request.open("GET","cardsheet.png",true);
request.send();

arrayBuffer.slice(0,cardWidth) 不起作用,因為這會在可變 arrayBuffer 中返回一個新元素,以及一個card 將退出多個 arrayBuffer.slice(0,cardWidth)。我想這樣做的原因是為了加載所有卡只向服務器發出一個請求。如果我的想法沒有完成,你能提供一個替代方案嗎?


參考解法

方法 1:

You can use CSS to simplify this, simply use the background‑position style while setting the background image of the element.

.card {
   width:100px;
   height:175px;
   background‑image:url(http://placekitten.com/300/300);
   background‑position:100px 100px;
}

Demo

.card {
  width:100px;
  height:175px;
  display:inline‑block;
  background‑image:url(http://placekitten.com.s3.amazonaws.com/homepage‑samples/408/287.jpg);
}

.card.card‑1 {
  background‑position:0px 0;  
}

.card.card‑2 {
  background‑position:‑100px 0;  
}

.card.card‑3 {
  background‑position:‑200px 0;  
}
<div class="card card‑1"></div>
<div class="card card‑2"></div>
<div class="card card‑3"></div>

(by GassyGhostPatrick Evans)

參考文件

  1. javascript PNG manipulation (CC BY‑SA 2.5/3.0/4.0)

#png #arraybuffer #javascript #XMLHttpRequest






相關問題

Iphone app PNG 序列動畫 - 如何在不崩潰的情況下以最佳方式使用 OPENgle (Iphone app PNG sequence animation - How to use OPENgle optimally without crashing)

相當於PNG的視頻? (Video equivalent of PNG?)

是否有將大型 PDF 圖像存儲為文件(BMP/PNG/等)的工具或技巧? (Is there a tool or trick to store a large PDF image as a file (BMP/PNG/etc)?)

Apakah libpng memungkinkan untuk membaca tidak seluruh gambar ke memori? (Does libpng allow to read not the whole image to the memory)

如何對png文件進行去隔行掃描? (How to de-interlace png files?)

javascript PNG操作 (javascript PNG manipulation)

渲染的 PNG 的 AJAX 加載不起作用 (AJAX load of a rendered PNG not working)

性能緩慢的 WPF 動畫。使用形狀比使用 .png 更好? (Slow performance WPF animations. Better to use shapes than .png?)

Xcode 4 歸檔導致管理器緩慢/無響應,並且 pngcrush 進程佔用 100% cpu (Xcode 4 archive results in slow/unresponsive Organizer & pngcrush process takes up 100% cpu)

如果我有一個包含大量圖像的 iPad 應用程序,那麼 PNG 仍然是最佳選擇嗎? (If I have an iPad app with lots of images, is PNG still the best option?)

MKMapView 遮擋是否剔除它的註釋? (Does MKMapView occlusion cull it's annotations?)

如何在 PHP 中為透明的 PNG 文件著色? (How can I tint transparent PNG files in PHP?)







留言討論