Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/67: Рейтинг темы: голосов - 67, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 14.04.2013
Сообщений: 10

Склеивание 2 картинок

08.05.2013, 15:29. Показов 12827. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите пожалуйста как можно склеить два изображения, чтобы они были одно под другим, если в коде содержится <div> со стилями который добавляет стили к изображению которые тоже нужны(к примеру тень). В конце надо чтобы код стал картинкой и при вызове кода <img src=ссылка_на_код.png> открывалась обычная картинка со стилями. Надеюсь на вашу помощь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2013, 15:29
Ответы с готовыми решениями:

Как реализовать склеивание двух картинок?
Есть сервис для наложения водного знака, при нажатии кнопки скачать, через аякс на сервер отправляются значения нужные для склейки картинки...

склеивание строк
Привет всем. Сейчас пытался сделать скрипт пхп, который берет из текстового файла наугад 5 строчек и записывает все пять в другой файл, но...

Склеивание даты
Привет всем! Помогите пожалуйста. С базы выдергивают дату, она у меня в таком формате 2010-12-08 Как можно ее преобразовать в...

18
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
08.05.2013, 20:14
Вам только ТЗ составлять

Ничего не понял конечно, но чтобы работать с картинками поищите в сети "работа с GD"
0
1 / 1 / 0
Регистрация: 14.04.2013
Сообщений: 10
08.05.2013, 21:03  [ТС]
Извините если написал не понятно. Сейчас попробую рассказать по понятнее.
Допустим у меня есть картинка и под нее мне надо поставить другую картинку. Это все надо сделать на php и желательно чтобы сохранились стили у картинки.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
09.05.2013, 00:25
создаете отдельный php-файл, отвечающий за вывод изображения. Подключаете через тег <img> только путь указываете к php-файлу.
в php-файле нечто наподобие такой схемы:
1. Открываете первое изображение, создаете ресурс (imagecreatefrom...)
2. Открываете второе изображения, создаете еще один ресурс (аналогично)
3. Берете ширину/высоту первого и второго изображения, складываете высоту и узнаете разность ширины
4. Думаете, что делать с различными по ширине изображениями (залить фоном, "отрезать", ...)
5. Создаете новый ресурс с высчитанной шириной и высотой (imagecreatetruecolor/imagecreate)
6. Если изображения в формате png/gif - добавляете "прозрачность" - imagecolortransparent, imagealphablending и т.д.
7. С помощью imagecopyresampled() копируете сначала первое, затем второе изображение
8. Отправляете заголовок (header()), что это рисунок.
9. выводите изображение через image....()

Все функции gd - здесь http://www.php.net/manual/ru/book.image.php

Добавлено через 2 часа 25 минут
дело было вечером, делать было нечего.. Картинки разной ширины растягиваются до большей ширины..
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
 
ini_set('memory_limit', '500M');
 
function drawImage($img1, $img2, $file = false)
{
    if(!preg_match('~\.(jpe?g|png|gif)$~i', $img1) || !preg_match('~\.(jpe?g|png|gif)$~i', $img2))
        return false;
    if(!($info[] = getimagesize($img1)) || !($info[] = getimagesize($img2)))
        return false;
 
    $info[0]['type'] = substr($info[0]['mime'], 6);
    $info[1]['type'] = substr($info[1]['mime'], 6);
    $info[0]['width'] = (int) $info[0][0];
    $info[1]['width'] = (int) $info[1][0];
    $info[0]['height'] = (int) $info[0][1];
    $info[1]['height'] = (int) $info[1][1];
 
    $create1 = 'imagecreatefrom' . $info[0]['type'];
    $create2 = 'imagecreatefrom' . $info[1]['type'];
    if( !function_exists($create1) || !function_exists($create1) )
        return false;
 
    $width = ($info[0]['width'] > $info[1]['width']) ? $info[0]['width'] : $info[1]['width'];
    $height = $info[0]['height'] + 1 + $info[1]['height']; //зазор в 1 пиксель между картинками (можно убрать, конечно)
    if(empty($width) || empty($height))
        return false;
    
    $image1 = $create1($img1); //create images
    $image2 = $create2($img2); //create images
 
    $dst = imagecreatetruecolor($width, $height);
 
    if( in_array($info[0]['type'], array('gif','png')) || in_array($info[1]['type'], array('gif','png')) )
    {
        imagecolortransparent($dst, imagecolorallocatealpha($dst, 0, 0, 0, 127));
        imagealphablending($dst, false);
        imagesavealpha($dst, true);
        $type = 'png';
    }
    else
        $type = 'jpeg';
    
    imagecopyresampled($dst, $image1, 0, 0, 0, 0, $width, $info[0]['height'], $info[0]['width'], $info[0]['height']);
    imagecopyresampled($dst, $image2, 0, $info[0]['height'] + 1, 0, 0, $width, $info[1]['height'], $info[1]['width'], $info[1]['height']);
    
    $save = 'image' . $type;
    header('Content-type: image/' . $type);
    return false !== $file ? $save($dst, $file) : $save($dst);
    
}
 
if(false === drawImage('http://cuboro.org/uploads/images/kartinki_2.jpg', 'http://img0.liveinternet.ru/images/attach/c/0/63/104/63104649_1282593567_09.png'))
echo file_get_contents('путь_к_дефолтной_картинке.jpg');
HTML5
1
<img src="путь_к_скрипту.php">
0
1 / 1 / 0
Регистрация: 14.04.2013
Сообщений: 10
09.05.2013, 16:46  [ТС]
KOPOJI, большое спасибо за код и рассказ как можно все реализовать, а что если я знаю размеры готового изображения? И еще как можно пользоваться вашим кодом? Пробовал дописать $img1 = "путь"; $img2 = "путь2"; но не помогло кстати забыл сказать что первая картинка уже создается на php(счетчик яндекса).
Пробовал сделать как вы рассказывали вышло так
PHP
1
2
3
4
5
6
$scr_image = imagecreatefrompng("http://www.yandex.ru/cycounter?".$_REQUEST['url']."");
imagecreatefromgif('google_pr' .$gpr .'.gif');
$image = imagecreate ( int "88px" , int "31px" );
bool imagecopyresampled ( resource $image , resource $src_image , int 0 , int 0 , int 0 , int 0 , int 88 , int 31 , int 88 , int 31 );
header('Content-type: image/gif');
imagegif($image);
где я мог допустить ошибку?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
09.05.2013, 19:51
не надо трогать никаких $img. Просто передавать в функцию адрес картинки вместо указанных мной адресов.
Цитата Сообщение от KOPOJI Посмотреть сообщение
PHP
1
if(false === drawImage('http://cuboro.org/uploads/images/kartinki_2.jpg', 'http://img0.liveinternet.ru/images/attach/c/0/63/104/63104649_1282593567_09.png')) echo file_get_contents('путь_к_дефолтной_картинке.jpg');
Цитата Сообщение от al-sher Посмотреть сообщение
PHP
1
$image = imagecreate ( int
описание типов данных уберите. Кстати,
Цитата Сообщение от al-sher Посмотреть сообщение
"88px"
при приведении к целому типу (а именно такой аргумент должен быть передан) вы получите 0, а не 88.
0
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 52
20.01.2014, 14:49
А как склеить много картинок, например 10?
Создаеться папка со случайным именем, туда закидываються 10 картинок, и потом те 10 клеяться в одну
Функция imagecopy описывает только 2 картинки
спасибо
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.01.2014, 15:18
поочередно. Сначала две картинки.. Затем к ним еще.. Затем еще..
0
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 52
20.01.2014, 15:21
ясно, не подумал чет от тем (новенький)
а как б это автоматизировать, чоб взяло все картинки с определенной папки и склеило ?
спасибо
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.01.2014, 15:25
Автоматизировать, конечно, можно.. Вопрос в том, чтобы "правильно" склеить их. Например, какого размера должна быть каждая "вклеенная" картинка? По сколько изображений должно быть в ширину/высоту. Что делать, если размеры картинок не дают четко определить размеры (ведь тогда получится где-то "пустое" место). И, самое главное, работа с изображениями в PHP через GD/GD2 - достаточно ресурсоемкий процент, имхо, в данной ситуации лучше посмотреть в сторону других языков программирования (хотя бы тот же "прародитель" - си)
0
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 52
20.01.2014, 15:28
Можно взять размеры изображений и подщитать
там есть отступ от начала картинки(финальной) и чтоб он был равен ширине пред.+ чтототам, это техничекий вопрос такой, ИМХО.
Мне бы вывод автоматизировать , а там чтоб не было пробелов или наезжаний картинок , я думаю допилю сам ))
я делаю поочерено , но чет ничего не меняеться
Я чтот не знаю как другие языки под веб подключить
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.01.2014, 15:43
Цитата Сообщение от mariklozik Посмотреть сообщение
Мне бы вывод автоматизировать
вывод чего автоматизировать? Картинок из директории что ли?
0
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 52
20.01.2014, 15:57
ну склейку 10ти картинок
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.01.2014, 16:03
я же говорил - склеивание 10 картинок от склеивания двух мало чем отличается, кроме более детального продумывания того, каким образом вы их будете собирать в одну. А так - тот же самый алгоритм, только imagecopyresampled использовать больше (в 10 раз)
1
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 52
20.01.2014, 16:26
я то думаю в чем проблема , я исп. imagecopy )))

А как удобнее, переименовывать картинки в 1 , 2 , 3 ... 10
или брать (еще не знаю как) все файлы из папки и прописывать каждый раз путь чтот такое , можно в 2х словах пож. как выбрать из папки
спасибо
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.01.2014, 16:29
В цикле пробегайтесь по директории, имена картинок складывайте в массив. Затем пробегайтесь по массиву и создавайте изображения из этих имен. Затем их склеивайте. Полностью динамически все это реализовать будет проблематично
1
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 52
23.01.2014, 15:30
Тзвините конечно, ничего не получаеться. мой вывод
PHP
1
2
3
4
5
6
7
8
9
10
11
12
for ($i=1; $i<=2; $i++) {
 
    for ($j=1; $j<=5; $j++) {
    
        list($x, $y) = GetImageSize("images/$j.png");
        $xx+=$x;    $yy+=$y;
        $src = ImageCreateFromPNG("images/$j.png");
        $image = ImageCopy($background, $src,($xx-$x), ($i-1)*($y+50), $null , $null , 500, 500);
    
    }
    
}
выводит такое
ну а должно чтоб нижняя стора примкнулась к левой стороне и начиналось с 6ти (картинок 10
Спасибо)
0
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 52
23.01.2014, 20:05
Ребят , помогите пож..
0
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 52
26.01.2014, 17:50
извините , но АП , недоходит мо меня )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.01.2014, 17:50
Помогаю со студенческими работами здесь

Склеивание PHP+TPL в один файл
Есть папка source и папка tpl Задача сделать так, что бы одноимённые файлы php&amp;tpl в этих папках превращались в один, единый файл ...

Создание/склеивание doc\docx файла из шаблона doc\docx с заменой ключевых слов
Подскажите, как можно такое реализовать? Я узнал, что в rtf нельзя делать разрыв страницы, а просто как с текстовым файлом с doc и docx...

Склеивание картинок в одну
Люди... есть 4 картинки... 1.gif,2.gif,3.gif,4.gif Можно ли в ASP их склеить, чтоб при выводе в HTML было &lt;IMG src=&quot;sum_.gif ...

Склеивание
Знаю, тема заезженная, но я так и не понимаю как это реализовывать. Переписывал я такой UDP чат на TCP и столкнулся с такой проблемой,...

Склеивание
Приветствую Ребята подскажите как осуществить склеивание двух файлов exe. У меня есть исходники на Builder C++ обоих. Нужно , чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru