Я создаю простую головоломку. Чтобы сделать это, мне нужно вырезать картинку, которую я использую, на 20 штук. Есть ли способ в Javascript разрезать изображение на 20 равных частей и сохранить их как 20 разных объектов на веб-странице? Или мне просто нужно пойти в фотошоп и вырезать каждую фотографию и позвонить?Резка изображения на куски через Javascript
ответ
Вы можете сделать это, установив изображение в качестве фона на div, а затем установите его фоновое положение. Это в основном то же самое, что и с использованием CSS Sprites.
(предположим, что куски 100 х 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
}
Теперь я могу сделать это с помощью идентификаторов div? – TheChes44
Конечно, такой же. –
Это легко сделать с помощью 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];
}
Это может дать SecurityError: Не удалось выполнить 'toDataURL' в 'HTMLCanvasElement': Tainted canvas не может быть экспортирован. –
Спасибо за это Мэтт. –
@MertKoksal Его из-за CORS Вы можете установить: img.setAttribute ('crossOrigin', 'anonymous'); : https://stackoverflow.com/a/20424457/7121889 –
вы можете использовать метод 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>
- 1. Резка изображения или фотографии на куски
- 2. Резка большого XML-файла на мелкие куски
- 3. Резка большого XML-файла на более мелкие куски в C#
- 4. Резка изображения в меньших частях Python или JavaScript
- 5. Резка/нарезка HTML-документа на куски с помощью BeautifulSoup?
- 6. easeljs разделение изображения на куски
- 7. осколок SVG изображения на куски
- 8. Резка части изображения и сохранение исходного изображения
- 9. Резка наклонных линий холст/Javascript?
- 10. Как читать куски изображения?
- 11. Html2Canvas then Canvas2Image резка сгенерированного изображения
- 12. Javascript/Угловая резка массива до его объявления
- 13. CSS резка изображения в абсолютном блоке
- 14. Резка изображения по диагонали с помощью CSS3
- 15. Резка изображения на содержание CALayers во время анимации
- 16. Загрузка изображения через javascript
- 17. Разбиение файла на куски с помощью Javascript
- 18. Получение изображения через javascript
- 19. Резка изображения внутри изображения с помощью Corona SDK
- 20. Резка массива?
- 21. инлайн вставки изображения через JavaScript
- 22. Как загрузить изображения через Javascript?
- 23. Javascript шаблонных, генерируя куски HTML
- 24. Резка верхней части изображения с переполнением или клипом
- 25. Изменение стиля изображения через JavaScript
- 26. Изменение цвета изображения через Javascript
- 27. Javascript «перетаскивание» изображения через холст
- 28. Unity3D: Как сделать эффект, который разрезал аватар на куски
- 29. Авто-резка объектов JSON
- 30. Почему мои события socket.io проходят через куски?
Холст элемент позволит вам «вырезать» части, но точно, как сделать это будет зависеть от ваших конкретных требований вокруг того, что вы хотите * сделать * с кусочками. – Pointy
Я хочу, чтобы части могли быть перетаскиваемыми и отбрасываемыми. В настоящее время я использую Jquery для этой задачи, но поскольку эта функция не поддерживается, а сторонние надстройки не работают, я уклоняюсь от использования JQuery. Я могу перейти на HTML5, если он может перетащить. В любом случае, я в основном хочу 20 разных изображений, которые я могу перетащить на кадр, чтобы они могли «решить» загадку. – TheChes44