Učimo vas kako izraditi web stranicu i programirati
 



HTML5 Canvas

Slike

Osnovni princip umetanja slike u CANVAS

Pri umetanju slike u HTML dokument koristi se IMG tag u kojem se jednostavno definira SRC atribut. U CANVASu to nije dovoljno, nego se mora prvo kreirati javascript objekt imgObj , koji se nakon toga pomoću metode drawImage(imgObj, x, y) umeće u CANVAS.
Osim same slike u CANVAS se može umetati video ili pak neki drugi CANVAS element. Pri umetanju videa u canvasu će biti prikazan statični frame videa, dakle screenshoot videa.

Umetanje

1. slike koja je već učitana u HTML dokument

Potrebno je prvo u HTMl dokumentu napisati IMG tag, a zatim mu pristupiti sa:
document.images, document.getElementsByTagName() ili document.getElementById()
Nakon toga se objekt slike ubacuje u CANVAS sa drawImage(imgObj, x, y).

Primjer: vidi primjer » vidi code

2. slike koja je na drugoj domeni

Za umetanje slike na drugoj domeni potrebno je prvo kreirati prazan slikovni objekt sa new Image(). Nakon što se src svojstvu definira URL put do fajla (slike), pomoću drawImage(imgObj, x, y) ubacuje se slikovni objekt u CANVAS.
Veoma je važno da se upotrijebi onload event kako bi slika bila učitana u dokument prije nego li se započne umetanje u CANVAS. To se može učiniti na dva načina prikazana dolje:

Slika sa druge domene: vidi primjer » vidi code

Osim sa druge domene može se na isti način učitati i slika na istoj domeni, ali bez upotrebe IMG taga.

Slika sa iste domene: vidi primjer » vidi code
Napomena: Ovdje je za sliku upotrijebljen animirani GIF.

3. slike pomoću data: URL-a

Manje slike se mogu se umetati pomoću data: protokola. Iako nije zaživio kao standard podržava ga većina browsera.

  <img width="16"
          height="16"
          alt="star"
          src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6Qdv
          CchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
          AAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqN
          KToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0S
          lBCBMQiB0UjIQA7" >

Primjer data : vidi primjer » vidi code

4. drugi CANVAS element

Moguće je prvo nacratati nešto u jedan CANVAS, a potom ga umetnuti u drugi CANVAS. Ako ne želimo da prvi canvas bude prikazan može se upotrijebiti createElement('canvas') metoda.

Primjer data : vidi primjer » vidi code

5. videa

Postoje dva načina. Prvi je da se definira VIDEO tag u HTML dokumentu nakon čega mu se u JS pristupa sa document.getElementById(). Tako se stvara objekt koji se pomoću drawImage(imgObj, x, y) umeće u CANVAS.
Također je važno upotrijebiti canplay event jer je potrebno da video bude učitan prije nego što se umetne u CANVAS.

Primjer - <video ... >: vidi primjer » vidi code

Drugi način je da se prvo kreira objekt pomoću createElement('video') metode te zatim da se u src svojstvu definira URL put do videa.
Nakon toga se taj objekt umeće u CANVAS sa drawImage(imgObj, x, y).

Primjer - createElement('video'): vidi primjer » vidi code

Važno je napomenuti da se ne ubacuje cijeli video u canvas već samo određeni frame tog videa, dakle statična slika.



Razni oblici metode drawImage()

Ova metoda može imati različiti broj argumanata, pa se može koristiti na razne načine.


1. Translacija: drawImage(imgObj, x,y)

Ovo je najjednostavniji oblik koji umeće slikovni objekt imgObj i translatira na koordinate x,y.

canvas image translation

Primjer: vidi primjer » vidi code


2. Rotacija: drawImage(imgObj, x,y) i rotate(rad)

Rotacija slike se ustvari postiže rotacijom canvas-a tj. rotate() metodom .

canvas image rotation

Primjer - rotate(30 * TO_RADIANS): vidi primjer » vidi code


3. Scaling: drawImage(imgObj, x,y, width,height)

Promjena veličine slike može se postići dodavanje width,height argumenata. Mogu se upotrijebiti img.width i img.height svojstva slike.

Primjer - rotate(30 * TO_RADIANS): vidi primjer » vidi code


4. Slicing/Croping: (imgObj, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)

Ovaj oblik se koristi za izrezivanje dijela slike i umetanje u CANVAS.
sx,sy, sWidth,sHeight - definiraju pravokutnik izrezivanja source slike
dx,dy, dWidth,dHeight - definiraju pravokutnik unutar CANVASa u koji će se umetati izrezana slika

canvas image slicing

Primjer - izrezivanje slike: vidi primjer » vidi code




| Uvjeti Korištenja | Zaštita Privatnosti | Kontakt |