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

maxy666

Профессор
Регистрация
23 Июл 2012
Сообщения
142
Реакции
44
Подскажите пожалуйста что исправить в коде
Код:
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 пикселей, сейчас они выводиться в размере по одному пикселю:
770af3ea2b74.jpg

пробовал внести под цикл
$row['x']+=10;
$row['y']+=10;
что бы координаты вставляемой картинки смещались на 10 пикселей
но результат:
c977f1d1e762.jpg


если можно подскажите как сделать что бы выводилось
77526868b1ff.jpg
 
Мне кажется, что они просто накладываются одна на другую, вы же хотите чтобы они последовательно копировались в большую картинку. В этом случае надо в цикле сделать арифметическую прогрессию для координаты 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) то последовательного размещения маленьких картинок не получится, вернее алгоритм высчитывания координат будет уже другой.
 
Назад
Сверху