Вот что я хочу сделать. У меня есть класс, который я создал, но я хочу, чтобы только определенные части класса показывали, ЕСЛИ определенные значения установлены в базе данных. Класс делает то, что он окрашивает базовое изображение, а затем помещает другое изображение сверху. Иногда, хотя в базе данных установлено несколько слоев, класс должен быть адаптирован для соответствия.
Кто-нибудь знает, как или делать какие-либо предложения о том, как я могу это сделать?
Так, например, этот класс позволяет окрашивать базовое изображение, а другое масштабировать и размещать сверху:
public function layers2 ($target, $art, $newcopy, $red, $blue, $green) {
$artLayer = imagecreatefrompng($art); // Art Layer
$base = imagecreatefrompng($target); // Base Product
$base_location = "base";
$img = imagecreatefrompng($base);
$width3 = imagesx( $artLayer ); // artLayer
$height3 = imagesy( $artLayer ); // artLayer
//COLOR THE IMAGE
imagefilter($base, IMG_FILTER_COLORIZE, $red, $green, $blue, 1); //the product
imagecopyresampled($base,$artLayer,350, 150, 0, 0, 300, 300, imagesx( $artLayer ), imagesy( $artLayer )); // rotate image
// save the alpha
imagesavealpha($base,true);
// Output final product
imagepng($base, $newcopy); //OUTPUT IMAGE
}
Что я хочу сделать, добавить еще одно значение в зависимости от количества слоев для базового изображения, которое установлено в таблице базы данных. Это потому, что есть изображения, которые имеют более одного цветного слоя.
так что-то вроде этого:
public function layer_3($target, $NEWLAYER, $art, $newcopy, $r, $b, $g) {
$artLayer = imagecreatefrompng($art); // Art Layer
$colorLayer1 = imagecreatefrompng($NEWLAYER); // NEW LAYER
$base = imagecreatefrompng($target); // Base Product
$base_location = "base";
$img = imagecreatefrompng($base);
// NEW LAYER
$width = imagesx( $colorLayer1 ); // colorLayer1
$height = imagesy( $colorLayer1 ); // colorLayer1
$width3 = imagesx( $artLayer ); // artLayer
$height3 = imagesy( $artLayer ); // artLayer
$img=imagecreatetruecolor( $width, $height ); // NEW LAYER
imagealphablending($img, true); // NEW LAYER
$transparent = imagecolorallocatealpha( $img, 0, 0, 0, 127 );
imagefill( $img, 0, 0, $transparent );
//COLOR THE IMAGE
imagefilter($base, IMG_FILTER_COLORIZE, $r, $b, $g, 1); //the base
imagecopyresampled($img,$base,1,1,0,0, 1000, 1000, imagesx( $base ), imagesy( $base ) );
imagecopyresampled($img,$colorLayer1,1,1,0,0, 1000, 1000, imagesx( $colorLayer1 ), imagesy( $colorLayer1 )); //NEW LAYER
imagecopyresampled($img,$artLayer,300, 200, 0, 0, 350, 350, imagesx( $artLayer ), imagesy( $artLayer ));
imagealphablending($img, false);
imagesavealpha($img,true);
imagepng($img, $newcopy);
}