yyyurik
Новичок
Вообще думал создать тему, но думаю в эту как раз пойдет...
Суть таже, уменьшить фотографию(jpg, gif, png, bmp) + добавить эффект (рамка вокруг фотографии) и
пересохранить. Ниже приведен код который добавляет эффекты в виде рамки для фотографии
Изображения рамки для фотографии
После у нас получается следующее изображение:
И еще функция, которая сжимает фотографию до нужного размера без потери качества
У меня не получается объединить эти 2 программки, то не сжимается до нужного размера, то эффект не добавляется((( не могу понять от чего...
P.S. Возможны какие-либо не точности, т.к. только учусь
Суть таже, уменьшить фотографию(jpg, gif, png, bmp) + добавить эффект (рамка вокруг фотографии) и
пересохранить. Ниже приведен код который добавляет эффекты в виде рамки для фотографии
PHP:
<?php
$graphic2 = "12.jpg"; // путь к изображению
list($width, $height) = getImageSize($graphic); // ширина и высота изображения
// хранения изображений в памяти, чтобы мы могли использовать его с библиотекой GD
$image = imagecreatefromjpeg($graphic);
/*Определение: imagecreatefromgif ( "папки / image.jpg");
Эта функция создает копию изображения и сохраняет изображения в переменных в PHP.
*/
// ХРАНЕНИЯ тени ИЗОБРАЖЕНИЙ
// Заносим все 8 теней в память.
$tl = imagecreatefromgif("images/shadow_TL.gif");
$t = imagecreatefromgif("images/shadow_T.gif");
$tr = imagecreatefromgif("images/shadow_TR.gif");
$r = imagecreatefromgif("images/shadow_R.gif");
$br = imagecreatefromgif("images/shadow_BR.gif");
$b = imagecreatefromgif("images/shadow_B.gif");
$bl = imagecreatefromgif("images/shadow_BL.gif");
$l = imagecreatefromgif("images/shadow_L.gif");
// Теперь все картинки которые нам нужны хронятся в памяти Т
// Теперь мы должны создать еще один (холст) для их вместе.
// Создаем холст
/*
Помните, что полотно должно быть больше, чем изображение, в противном случае изображение будет
скрывать теневые картинки.В этом случае ширина полотна следует ширина изображения, а также в
два раза ширину одной из теневой стороне изображения.
Иными словами: Ширина = Канва Ширина Image + 2 (Ширина боковой Image)
Прочтите еще раз, что это проще, чем кажется.
*/
// Первый мы находим размеры стороне изображения
$w = imagesx($l); // Ширина тени изображения влево
$h = imagesy($l); //Высота левой теневой образ
/*
Далее мы получим наши новые высоты и ширины на холсте. Это создает изображение, которое несколько
больше, чем ваш образ.
*/
$canvasHeight = $height + (2*$w);
$canvasWidth = $width + (2*$w);
//Третий мы создаем пустой холст с этими новыми размерами
$canvas = imagecreatetruecolor($canvasWidth, $canvasHeight);
/*
Объединяем фотографии. У нас есть графические изображения, образы и тени холст готов. Теперь пришло
время объединять!
В первом разделе мы добавив сверху, слева, снизу, а затем правой секции.
*/
imagecopyresized($canvas, $t,0,0,0,0,$canvasWidth,$w,$h,$w);
imagecopyresized($canvas, $l,0,0,0,0,$w,$canvasHeight,$w,$h);
imagecopyresized($canvas, $b,0,$canvasHeight-$w,0,0,$canvasWidth,$w,$h, $w);
imagecopyresized($canvas, $r,$canvasWidth-$w,0,0,0,$w,$canvasHeight,$w,$h);
// Здесь я делаю то же самое еще раз, только на этот раз я в настройке и $ W $ h для ширины
и высоты углов.
$w = imagesx($tl);
$h = imagesy($tl);
imagecopyresized($canvas, $tl,0,0,0,0,$w,$h,$w,$h);
imagecopyresized($canvas, $bl,0,$canvasHeight-$h,0,0,$w,$h,$w,$h);
imagecopyresized($canvas, $br,$canvasWidth-$w,$canvasHeight-$h,0,0,$w,$h,$w,$h);
imagecopyresized($canvas, $tr,$canvasWidth-$w,0,0,0,$w,$h,$w, $h);
/*
На данный момент полотно имеет все тени изображения
Я изменил $ W к размеру периметру, с тем чтобы правильно разместить изображение.
*/
$w = imagesx($l);
$imj=imagecopyresampled($canvas, $image, $w,$w,0,0, imagesx($image), imagesy($image), imagesx($image),imagesy($image));
// Заметьте, то я использовал imagecopyresampled, причина этого заключается получить гораздо более
высокое качество изображения по сравнению с imagecopy
// размер. Тем не менее, я в жертву скорости для этого качества.
//Это определяет тип заголовка (какая файл это?) В буквальном смысле этого PHP-файла превращается в GIF.
header("content-type: image/jpeg");
Imagejpeg($canvas);
ImageDestroy($canvas);
?>
После у нас получается следующее изображение:
И еще функция, которая сжимает фотографию до нужного размера без потери качества
PHP:
function imageresize($outfile,$infile,$neww,$newh,$quality)
{
$im=imagecreatefromjpeg($infile);
$k1=$neww/imagesx($im);
$k2=$newh/imagesy($im);
$k=$k1>$k2?$k2:$k1;
$w=intval(imagesx($im)*$k);
$h=intval(imagesy($im)*$k);
$im1=imagecreatetruecolor($w,$h);
imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im));
imagejpeg($im1,$outfile,$quality);
imagedestroy($im);
imagedestroy($im1);
/*imageresize("$outfile", "$image",118,250,80); $outfile - адрес конечного изображения(img/12.jpg), $image-
адрес начального изображения, 118 - ширина картинки в пикселях, 250-высота, 80 - качество картинки.. */
}
P.S. Возможны какие-либо не точности, т.к. только учусь

