Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 04.02.2022, 02:04
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

https://jsfiddle.net/3oj924aq/
__________________
29375, 35

Последний раз редактировалось Aetae, 04.02.2022 в 13:01.
Ответить с цитированием
  #12 (permalink)  
Старый 04.02.2022, 04:57
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

Aetae, отличная работа!))
Только сгенерированное изображение почему-то отображается аж три раза... как бы это поправить?
Ответить с цитированием
  #13 (permalink)  
Старый 04.02.2022, 08:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Борис К
отображается аж три раза...
долго думать над строкой 58 и в частности строками 59 - 60 в блоке js, можно конечно и пораньше задуматься со строки 46 например.)))

Последний раз редактировалось рони, 04.02.2022 в 13:34.
Ответить с цитированием
  #14 (permalink)  
Старый 04.02.2022, 08:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Aetae,
Ответить с цитированием
  #15 (permalink)  
Старый 04.02.2022, 08:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Борис К
src="http:
ссылки без S лучше не использовать в примерах на форуме, картинки не отобразятся, скрипты не загрузятся с такими url.
Ответить с цитированием
  #16 (permalink)  
Старый 04.02.2022, 13:01
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Борис К, поправил shuffle, там был баг - он не трогал последнюю картинку.)
__________________
29375, 35
Ответить с цитированием
  #17 (permalink)  
Старый 04.02.2022, 13:41
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

Спасибо, Рони!
Сообщение от рони
долго думать над строкой 58 и в частности строками 59 - 60
Тут уже вроде сообразил... после бессонной ночи)
Сообщение от рони
можно конечно и пораньше задуматься со строки 46 например.)))
Видимо, с этим будет посложнее... но я непременно последую вашему совету!))
Сообщение от рони
ссылки без S лучше не использовать в примерах на форуме
Спасибо за подсказку!
Сообщение от рони
картинки не отобразятся, скрипты не загрузятся с такими url
Но у меня всё отлично отображается, загружаясь... честное слово!))
Видимо, у меня ещё старый браузер... такое может быть?
Ответить с цитированием
  #18 (permalink)  
Старый 04.02.2022, 14:08
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

Сообщение от Aetae
поправил shuffle, там был баг
Ничего, бывает в спешке... Вы и так мгновенно реализовали мою фантазию)))
Сообщение от Aetae
он не трогал последнюю картинку.)
Да, я заметил такое дело))
Спасибо, Aetae!
P.S. Но ещё вопрос родился: возможно ли сделать ещё кнопку перемешивания для генерации нового изображения, чтобы не перезагружать страницу, или это слишком трудоёмко?
<button onclick="...">Shuffle</button>

Самостоятельно разобраться пока не смог((

Последний раз редактировалось Борис К, 04.02.2022 в 14:34.
Ответить с цитированием
  #19 (permalink)  
Старый 04.02.2022, 14:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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>
Ответить с цитированием
  #20 (permalink)  
Старый 04.02.2022, 15:12
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

Рони... так ничесна!))
Я не поспеваю за Вами... учица новому!
Огромная благодарность Богам Java Script!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DLE загрузка изображений через дополнительное поле armn555 Элементы интерфейса 0 18.08.2017 11:08
Ajax. Как сделать загрузку изображений, отображение, удаление как на Авито wowtschuk AJAX и COMET 1 07.03.2017 01:34
Повременная смена изображений jozev Элементы интерфейса 2 01.08.2011 18:43
Прокрутка изображений gen552 Элементы интерфейса 6 01.04.2011 13:11
Скролл мини изображений I-Trap Элементы интерфейса 1 25.11.2009 22:03