Разрезание изображения на кусочки с помощью Javascript - PullRequest
16 голосов
/ 18 января 2012

Я создаю простую головоломку. Для этого мне нужно разрезать используемую картинку на 20 частей. Есть ли способ в Javascript разрезать картинку на 20 равных частей и сохранить их как 20 различных объектов на веб-странице? Или мне просто нужно пойти в фотошоп, вырезать каждую картинку и позвонить ей?

Ответы [ 3 ]

19 голосов
/ 18 января 2012

Вы можете сделать это, установив изображение в качестве фона для div, а затем установив его положение фона.Это в основном то же самое, что и использование CSS-спрайтов .

(предполагается, что 100x * 100px)

<div class="puzzle piece1"></div>
<div class="puzzle piece2"></div>

CSS:

.puzzle {
   background-image:url(/images/puzzle.jpg);
   width:100px;
   height:100px;
}

.piece1 {
   background-position:0 0
}

.piece2 {
   background-position:-100px -100px
}
18 голосов
/ 18 января 2012

Это легко сделать с помощью Canvas. Общая идея:

var image = new Image();
image.onload = cutImageUp;
image.src = 'myimage.png';

function cutImageUp() {
    var imagePieces = [];
    for(var x = 0; x < numColsToCut; ++x) {
        for(var y = 0; y < numRowsToCut; ++y) {
            var canvas = document.createElement('canvas');
            canvas.width = widthOfOnePiece;
            canvas.height = heightOfOnePiece;
            var context = canvas.getContext('2d');
            context.drawImage(image, x * widthOfOnePiece, y * heightOfOnePiece, widthOfOnePiece, heightOfOnePiece, 0, 0, canvas.width, canvas.height);
            imagePieces.push(canvas.toDataURL());
        }
    }

    // imagePieces now contains data urls of all the pieces of the image

    // load one piece onto the page
    var anImageElement = document.getElementById('myImageElementInTheDom');
    anImageElement.src = imagePieces[0];
}
1 голос
/ 10 января 2013

Вы можете использовать метод drawImage, чтобы разрезать части исходного изображения и нарисовать их на холсте:

drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) 

https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Canvas_tutorial/Using_images

что-то вроде:

  document.getElementById("vangogh").onclick=function()
    {
    draw();
    }; 

 function draw() {
    var ctx = document.getElementById('canvas').getContext('2d');
    ctx.drawImage(document.getElementById('source'),33,45);
                 }

затем создайте перетаскиваемый контент для ваших новых сущностей:

<div id="columns">
   <div class="column" draggable="true"><header>A</header></div>
   <div class="column" draggable="true"><header>B</header></div>
   <div class="column" draggable="true"><header>C</header></div>
</div>

http://www.html5rocks.com/en/tutorials/dnd/basics/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...