Цитата:
|
Aetae,
:thanks: |
Цитата:
|
Борис К, поправил shuffle, там был баг - он не трогал последнюю картинку.)
|
Спасибо, Рони!
Цитата:
Цитата:
Цитата:
Цитата:
Видимо, у меня ещё старый браузер... такое может быть? |
Цитата:
Цитата:
Спасибо, Aetae! P.S. Но ещё вопрос родился: возможно ли сделать ещё кнопку перемешивания для генерации нового изображения, чтобы не перезагружать страницу, или это слишком трудоёмко? <button onclick="...">Shuffle</button> Самостоятельно разобраться пока не смог(( |
canvas create img
Борис К,
:-? <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <img id="pic"></img> <button id="btn">Shuffle</button> <script> // функция перемешивающая массив function shuffle(array) { let i = array.length; while (i--) { let j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } return array; } // функция добавляющая картинку на страницу function toImage(canvas, type) { pic.src = canvas.toDataURL(type) } const x = 150; // ширина одного const y = 150; // высота одного const w = 2; // сколько в ряду // картинки, должны быть на том же домене или иметь Access-Control-Allow-Origin const images = [ "https://picsum.photos/seed/aaa/150", "https://picsum.photos/seed/bbb/150", "https://picsum.photos/seed/ccc/150", "https://picsum.photos/seed/ddd/150" ]; const h = Math.ceil(images.length / w); // сколько в столбце const canvas = Object.assign(document.createElement('canvas'), { width: w * x, height: h * y }); const ctx = canvas.getContext('2d'); const createImg = () => Promise.all( shuffle(images).map((src, i) => new Promise( (onload, onerror) => Object.assign(new Image(), { crossOrigin: 'anonymous', src, onerror, onload }) ).then(({target}) => { const hPos = Math.floor(i / w); const wPos = i - (hPos * w); ctx.drawImage( target, wPos * x, hPos * y, x, y ) })) ).then(() => { toImage(canvas, 'image/jpeg'); }); btn.addEventListener('click', createImg); createImg() </script> </body> </html> |
Рони... так ничесна!))
Я не поспеваю за Вами... учица новому! :write: Огромная благодарность Богам Java Script! :victory: |
Aetae, Рони, тока не кидайте в меня
Но возможно ли в принципе сделать так, чтобы в последнем коде на этой страничке 10-я строка (<img id="pic"></img>) была заменена следующей таблицей с отправкой к стилям? <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style type="text/css"> [data-id="1"] { background-image:url(...); width:150px; height:150px; background-position:0px 0px } [data-id="2"] { background-image:url(...); width:150px; height:150px; background-position:150px 300px } [data-id="3"] { background-image:url(...); width:150px; height:150px; background-position:0px 150px } [data-id="4"] { background-image:url(...); width:150px; height:150px; background-position:150px 150px } </style> </head> <body> <table align="center" cellspacing="0" cellpadding="0"> <tr> <td data-id="1"></td> <td data-id="2"></td> </tr> <tr> <td data-id="3"></td> <td data-id="4"></td> </tr> </table> </body> </html> :help: |
Борис К,
вопрос не понимаю, нафига тогда огород с канвас городили, если вернулись к тому что было? |
Часовой пояс GMT +3, время: 23:55. |