Есть функции, отвечающие за добавку изображения на сайте. Вот они: Код (PHP): function createThumbnail($name, $filename, $new_w, $new_h) { $system=explode(".", $filename); $system = array_reverse($system); if (preg_match("/jpg|jpeg/", $system[0])) { $src_img=imagecreatefromjpeg($name); } else if (preg_match("/png/", $system[0])) { $src_img=imagecreatefrompng($name); } else if (preg_match("/gif/", $system[0])) { $src_img=imagecreatefromgif($name); } else { return false; } if (!$src_img) { fancyDie("Unable to read uploaded file during thumbnailing. A common cause for this is an incorrect extension when the file is actually of a different type."); } $old_x = imageSX($src_img); $old_y = imageSY($src_img); if ($old_x > $old_y) { $percent = $new_w / $old_x; } else { $percent = $new_h / $old_y; } $thumb_w = round($old_x * $percent); $thumb_h = round($old_y * $percent); $dst_img = ImageCreateTrueColor($thumb_w, $thumb_h); fastImageCopyResampled($dst_img, $src_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y); if (preg_match("/png/", $system[0])) { if (!imagepng($dst_img, $filename)) { return false; } } else if (preg_match("/jpg|jpeg/", $system[0])) { if (!imagejpeg($dst_img, $filename, 70)) { return false; } } else if (preg_match("/gif/", $system[0])) { if (!imagegif($dst_img, $filename)) { return false; } } imagedestroy($dst_img); imagedestroy($src_img); return true; } function fastImageCopyResampled(&$dst_image, &$src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h, $quality = 3) { //Author: Tim Eckel - Date: 12/17/04 - Project: FreeRingers.net - Freely distributable. if (empty($src_image) || empty($dst_image)) { return false; } if ($quality <= 1) { $temp = imagecreatetruecolor ($dst_w + 1, $dst_h + 1); imagecopyresized ($temp, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w + 1, $dst_h + 1, $src_w, $src_h); imagecopyresized ($dst_image, $temp, 0, 0, 0, 0, $dst_w, $dst_h, $dst_w, $dst_h); imagedestroy ($temp); } elseif ($quality < 5 && (($dst_w * $quality) < $src_w || ($dst_h * $quality) < $src_h)) { $tmp_w = $dst_w * $quality; $tmp_h = $dst_h * $quality; $temp = imagecreatetruecolor ($tmp_w + 1, $tmp_h + 1); imagecopyresized ($temp, $src_image, $dst_x * $quality, $dst_y * $quality, $src_x, $src_y, $tmp_w + 1, $tmp_h + 1, $src_w, $src_h); imagecopyresampled ($dst_image, $temp, 0, 0, 0, 0, $dst_w, $dst_h, $tmp_w, $tmp_h); imagedestroy ($temp); } else { imagecopyresampled ($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); } return true; } И есть код, отвечающий за добавления на эти изображения водяного значка, вот он : Код (PHP): function trans_watermark($src_img) { $xi = imagesx($src_img); $yi = imagesy($src_img); $logo = imagecreatefrompng("watermark.png"); $xl = imagesx($logo); $yl = imagesy($logo); $xi = ($xi - 16) - ($xl); $yi = ($yi - 16) - ($yl); imagecopy($src_img, $logo, $xi, $yi, 0, 0, $xl, $yl); imagedestroy($logo); return $src_img; } Пытался соединить нижнее с верхним - не получается...подскажите в чем ошибка или как это все должно выглядеть.
Код (PHP): function createThumbnail($name, $filename, $new_w, $new_h) { $system=explode(".", $filename); $system = array_reverse($system); if (preg_match("/jpg|jpeg/", $system[0])) { $src_img=trans_watermark(imagecreatefromjpeg($name)); } else if (preg_match("/png/", $system[0])) { $src_img=trans_watermark(imagecreatefrompng($name)); } else if (preg_match("/gif/", $system[0])) { $src_img=trans_watermark(imagecreatefromgif($name)); } else { return false; } if (!$src_img) { fancyDie("Unable to read uploaded file during thumbnailing. A common cause for this is an incorrect extension when the file is actually of a different type."); } $old_x = imageSX($src_img); $old_y = imageSY($src_img); if ($old_x > $old_y) { $percent = $new_w / $old_x; } else { $percent = $new_h / $old_y; } $thumb_w = round($old_x * $percent); $thumb_h = round($old_y * $percent); $dst_img = ImageCreateTrueColor($thumb_w, $thumb_h); fastImageCopyResampled($dst_img, $src_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y); if (preg_match("/png/", $system[0])) { if (!imagepng($dst_img, $filename)) { return false; } } else if (preg_match("/jpg|jpeg/", $system[0])) { if (!imagejpeg($dst_img, $filename, 70)) { return false; } } else if (preg_match("/gif/", $system[0])) { if (!imagegif($dst_img, $filename)) { return false; } } imagedestroy($dst_img); imagedestroy($src_img); return true; } function fastImageCopyResampled(&$dst_image, &$src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h, $quality = 3) { //Author: Tim Eckel - Date: 12/17/04 - Project: FreeRingers.net - Freely distributable. if (empty($src_image) || empty($dst_image)) { return false; } if ($quality <= 1) { $temp = imagecreatetruecolor ($dst_w + 1, $dst_h + 1); imagecopyresized ($temp, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w + 1, $dst_h + 1, $src_w, $src_h); imagecopyresized ($dst_image, $temp, 0, 0, 0, 0, $dst_w, $dst_h, $dst_w, $dst_h); imagedestroy ($temp); } elseif ($quality < 5 && (($dst_w * $quality) < $src_w || ($dst_h * $quality) < $src_h)) { $tmp_w = $dst_w * $quality; $tmp_h = $dst_h * $quality; $temp = imagecreatetruecolor ($tmp_w + 1, $tmp_h + 1); imagecopyresized ($temp, $src_image, $dst_x * $quality, $dst_y * $quality, $src_x, $src_y, $tmp_w + 1, $tmp_h + 1, $src_w, $src_h); imagecopyresampled ($dst_image, $temp, 0, 0, 0, 0, $dst_w, $dst_h, $tmp_w, $tmp_h); imagedestroy ($temp); } else { imagecopyresampled ($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); } return true; } function trans_watermark($src_img) { $xi = imagesx($src_img); $yi = imagesy($src_img); $logo = imagecreatefrompng("chatsnwatermark.png"); $xl = imagesx($logo); $yl = imagesy($logo); $xi = ($xi - 16) - ($xl); $yi = ($yi - 16) - ($yl); imagecopy($src_img, $logo, $xi, $yi, 0, 0, $xl, $yl); imagedestroy($logo); return $src_img; }
Зачем этот символ? function fastImageCopyResampled(&$dst_image, &$src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h, $quality = 3) & ?
Это передача переменной в функцию по ссылке. При этом переменная не копируется, а функцию получает доступ к оригиналу переменной в памяти. Подробней можно почитать тут http://www.php.ru/manual/language.references.html
ссылка это Код (Text): <?php $img = $_GET['img']; /// путь к картинке которую копирайтим $im = imagecreatefromjpeg($img); $lg = imagecreatefrompng('copyrite.png'); /// наша картинка копирайта $img_x = imagesx($im); $img_y = imagesy($im); $img_x_copy = imagesx($lg); $img_y_copy = imagesy($lg); imagecopy($im, $lg, $img_x-$img_x_copy, $img_y-$img_y_copy, 0, 0, $img_x_copy, $img_y_copy); header('Content-Type: image/jpeg'); imagejpeg($im); imagedestroy($im); /// чистим мусор imagedestroy($lg); /// чистим мусор ?>