Jump to content
  • 0

наложить картинки друг на друга!


3d_max_9
 Share

Question

Помогите плиз надо решить делему )

Можно ли с php сделать эффект наложения одной картинки на другую.

С надписями и рамками разобрался но хотелось бы разобраться и с этим!

Пример:

Есть фото1

1266317245.jpg

и есть рисунок2

1266317286.jpg

Надо получить такое

1266317315.jpg

Если не особо хочется разбираться в этом то хоть дайте плиз ссылки где бы я мог почитать и разобраться!

Всем спасибо!

Link to comment
Share on other sites

22 answers to this question

Recommended Posts

  • 0
  rus said:
А еще это можно и с помощью вот такой программы сделать: FastStone Photo Resizer :lol:

смысл в том, что фото выкладываются на сервер и было бы намного проще, чтобы это все делалось автоматически

  AMD said:

спасибо, разбираюсь

Link to comment
Share on other sites

  • 0
  AMD said:

Это не совсем то! Просто здесь идет заморочка с альфа каналами, да и вообще все сильно закручено!

Неужели нет нет скрипта попроще?

Все уже обрыскал!

Link to comment
Share on other sites

  • 0

Вот нашел код немного изменил его, но изображение не выводится.

Кто может подсказать в чем дело?

<?php
$imag = "main.jpg";
header('Content-type: image/png');
$watermark = imagecreatefrompng('123/watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
if(eregi('.gif',$image)) {
$image = imagecreatefromgif($image);
}
elseif(eregi('.jpeg',$image)||eregi('.jpg',$image)) {
$image = imagecreatefromjpeg($image);
}
elseif(eregi('.png',$image)) {
$image = imagecreatefrompng($image);
}

else {
exit("Your image is not a gif, jpeg or png image. Sorry..");
}
$size = getimagesize($image);
$dest_x = $size[0] - $watermark_width - 10;
$dest_y = $size[1] - $watermark_height - 10;
imagecolortransparent($watermark,imagecolorat($watermark,0,0));
imagecopyresampled ($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $watermark_width, $watermark_height);
imagepng($image);
imagedestroy($image);
imagedestroy($watermark);
?>

Link to comment
Share on other sites

  • 0
  Quote
if(eregi('.gif',$image))

ОГО! strstr'оненавистник детектед.

Автор, тебе быстрее самому арзобраться с GD, чем переписывать чужие примеры.

$image определена? Закомментируй header и погляди, какую ошибку выдаёт. А, хы, он и не должен ничего выводить, imagepng сохраняет на диск, а не выводит пользователю.

Edited by Int
Link to comment
Share on other sites

  • 0
  Int said:
ОГО! strstr'оненавистник детектед.

Автор, тебе быстрее самому арзобраться с GD, чем переписывать чужие примеры.

$image определена? Закомментируй header и погляди, какую ошибку выдаёт. А, хы, он и не должен ничего выводить, imagepng сохраняет на диск, а не выводит пользователю.

Если не тяжело не мог бы ты объяснить подробней?

Я просто не занимаюсь созданием сайтов профессионально(и не хочу) это для меня просто хобби! Вот просто решил попробовать сделать фотогалерею! Но нервы уже сдают)

Выдает следующую ошибку

Warning: getimagesize(Resource id #4): failed to open stream: No such file or directory in z:\home\1111\www\222.php on line 21
‰PNG IHDR

Edited by 3d_max_9
Link to comment
Share on other sites

  • 0
  Int said:
$imag = "main.jpg";

смени на $image

Я это сразу усек :lol: только вот дело не в этом все ровно не чего не происходит :)

Жаль конечно что не получается. Ладно хрен на его буду налаживать тупо буквы(

Edited by 3d_max_9
Link to comment
Share on other sites

  • 0
  3d_max_9 said:
Я это сразу усек :lol: только вот дело не в этом все ровно не чего не происходит :)

Жаль конечно что не получается. Ладно хрен на его буду налаживать тупо буквы(

Накладываение рисунков друг на друга есть в gd_lib. Учите матчасть

Link to comment
Share on other sites

  • 0

ААААААА! Я только сейчас заметил. Все переменные в скрипте называются $image. Это ребус, типа угадай, что находится в переменной на каждой стадии выполнения скрипта?

Link to comment
Share on other sites

  • 0
  Int said:
ААААААА! Я только сейчас заметил. Все переменные в скрипте называются $image. Это ребус, типа угадай, что находится в переменной на каждой стадии выполнения скрипта?

Не совсем понял)

Если можно объясни поподробней!

Link to comment
Share on other sites

  • 0

$image = "main.jpg"; - строка

$image = imagecreatetruecolor() - идентификатор картинки

$image = imagecreatefromgif($image); - ересь!! в параметре должна быть указана строка. Результат - индентификатор картинки

imagepng($image); - опять ересь. Тут должна быть строка

imagedestroy($image); - а тут должен быть идентификатор.

Короче, в первой строке надо оставить imag, в imagepng тоже, и в createfrom* тоже.

Edited by Int
Link to comment
Share on other sites

  • 0
  Int said:
$image = "main.jpg"; - строка

$image = imagecreatetruecolor() - идентификатор картинки

$image = imagecreatefromgif($image); - ересь!! в параметре должна быть указана строка. Результат - индентификатор картинки

imagepng($image); - опять ересь. Тут должна быть строка

imagedestroy($image); - а тут должен быть идентификатор.

Короче, в первой строке надо оставить imag, в imagepng тоже, и в createfrom* тоже.

В общем все ровно ничего не понял я нуб))))

Если сможешь переделать буду признателен ну а если нет, то и на НЕТ и суда нет)!

  Veseloff said:
Я бы для этого заюзал imagemagick

Идея наверное хорошая но разбираться не стану, игра не стоит свеч, просто хотел сделать что то, для себя, не обыкновенное но видать это не мое(

Link to comment
Share on other sites

  • 0
  Int said:
Я же написал в каких из приведённых мной строк поменять image на imag

Сделал как ты и посоветовал, перестала работать проверка на тип картинки!!!

Вод код:)не рабочий)

<?php
$imag = "main.jpg";
header('Content-type: image/png');
$watermark = imagecreatefrompng('watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
if(eregi('.gif',$image)) {
$image = imagecreatefromgif($imag);
}
elseif(eregi('.jpeg',$image)||eregi('.jpg',$image)) {
$image = imagecreatefromjpeg($imag);
}
elseif(eregi('.png',$image)) {
$image = imagecreatefrompng($imag);
}

else {
exit("Your image is not a gif, jpeg or png image. Sorry..");
}
$size = getimagesize($imag);
$dest_x = $size[0] - $watermark_width - 10;
$dest_y = $size[1] - $watermark_height - 10;
imagecolortransparent($watermark,imagecolorat($watermark,0,0));
imagecopyresampled ($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $watermark_width, $watermark_height);
imagepng($image);
imagedestroy($image);
imagedestroy($watermark);

/*$image = "main.jpg"; - строка
$image = imagecreatetruecolor() - идентификатор картинки
$image = imagecreatefromgif($image); - ересь!! в параметре должна быть указана строка. Результат - индентификатор картинки

imagepng($imag); - опять ересь. Тут должна быть строка
imagedestroy($image); - а тут должен быть идентификатор.

Короче, в первой строке надо оставить imag, в imagepng тоже, и в createfrom* тоже.*/
?>

выдает такой рисунок

1266473127.jpg

Вот код без проверки на тип рисунка и все выдает как и надо

<?php
$imag = "main.jpg";
header('Content-type: image/png');
$watermark = imagecreatefrompng('watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image = imagecreatefromjpeg($imag);
$size = getimagesize($imag);
$dest_x = $size[0] - $watermark_width - 10;
$dest_y = $size[1] - $watermark_height - 10;
imagecolortransparent($watermark,imagecolorat($watermark,0,0));
imagecopyresampled ($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $watermark_width, $watermark_height);
imagepng($image);
imagedestroy($image);
imagedestroy($watermark);
?>

получается вот такой )

1266473293.jpg

Но остается одна проблема как все же проверить тип файла?

ЗЫ: Не по теме но все же!

Понравился фото-хостинг выставленный в разделе "обсуждения работ" vvshом +100.

Удобно, не навязчиво, без рекламы пока ). Пользуюсь охотно!

Link to comment
Share on other sites

  • 0
  Int said:
if(eregi(......

Упустил :) Здесь тоже imag

А чтобы регулярки не гонять, можно было сравнивать if (substr($imag,-4) == '.gif'), ну тут уж кому что проще понять.

Точно не доглядел :)

Int спасибо тебе ОГРОМНОЕ!!! :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy