разместить маленькие картинки на большую по координатах

Тема в разделе "PHP", создана пользователем maxy666, 22 мар 2013.

Модераторы: latteo
  1. maxy666

    maxy666 Постоялец

    Регистр.:
    23 июл 2012
    Сообщения:
    124
    Симпатии:
    31
    Подскажите пожалуйста что исправить в коде
    Код:
    PHP код:
    // Выбираем максимальный X и Y
    $result = mysql_query('SELECT MAX(x), MAX(y) FROM table');
    $row = mysql_fetch_assoc($result);
    // Определяем будущий размер большой картинки
    $bigW = $row['x'] + 10;
    $bigH = $row['y'] + 10;
     
    // Создаем пустое изображение ( Для большой картинки )
    $image_big = imagecreatetruecolor($bigW, $bigH);
     
    // Выполняем SQL запрос на получение картинок и их координат
    $result = mysql_query('SELECT * FROM table');
    while( $row = mysql_fetch_assoc($result) ) {
        // Загружаем картинку из файла
        $image_small = imagecreatefromjpeg( $row['url_image'] );
       
        // Помещаем картину на большую:
        imagecopy($image_big, $image_small, $row['x'], $row['y'], 0, 0, 10, 10);
       
        // Выгружаем картину
        imagedestroy( $image_small );
    }
    // Сохраняем большую картину в файл
    imagejpeg( $image_big, 'result.jpg' );
     
    // Выгружаем картину
    imagedestroy( $image_big );  
    Если можно посоветуйте что исправить что бы картинки были в размере по 10 пикселей, сейчас они выводиться в размере по одному пикселю:
    [​IMG]
    пробовал внести под цикл
    $row['x']+=10;
    $row['y']+=10;
    что бы координаты вставляемой картинки смещались на 10 пикселей
    но результат:
    [​IMG]

    если можно подскажите как сделать что бы выводилось
    [​IMG]
     
  2. vladya

    vladya Создатель

    Регистр.:
    5 окт 2009
    Сообщения:
    34
    Симпатии:
    7
    Мне кажется, что они просто накладываются одна на другую, вы же хотите чтобы они последовательно копировались в большую картинку. В этом случае надо в цикле сделать арифметическую прогрессию для координаты x (и y если нужно) с шагом 10. Но тогда, мне не понятна природа координат $row['x'] и $row['y'] - это простая последовательность чисел 1, 2, 3, 4... (что очень похоже по получаемому рисунку) или это произвольный набор чисел?

    Если первое, то тогда вам надо сделать так:
    Код:
    imagecopy($image_big, $image_small, $row['x']*10, $row['y']*10, 0, 0, 10, 10);
    Если второе, и они могут принимать произвольное значение от 0 до MAX(x) и MAX(y) то последовательного размещения маленьких картинок не получится, вернее алгоритм высчитывания координат будет уже другой.