ここは私がしたいことです。私は作成したクラスを持っていますが、クラスの特定の部分には、特定の値がデータベースに設定されているかどうかを示すだけです。クラスがしていることは、ベースイメージを色付けし、別のイメージを上に配置することです。時にはデータベースに複数のレイヤーが設定されているため、クラスが調整する必要があります。データベースのフィールド値に基づいてクラスに新しい値を追加する方法は?
誰でも方法を知っているか、私がこれをどうやってできるかについて何か提案していますか?
SO例えば、このクラスは、ベース画像を着色すると、別の上にスケーリングされ、配置されることを可能にする:
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
}
Iの数に応じて別の値を追加したいどのようなデータベーステーブルに設定されているベースイメージのレイヤーの数。これは、複数の色のレイヤーを持つ画像があるためです。
ので、このような何か:
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);
}
本当にありがとうございますが、私があなたが言及したことをやり遂げる方法についてはあまりよく分からないことを認めなければなりません。あなたが精緻化できる方法はありますか? – GGcupie
私はリファクタリングの例で私の答えを編集しました... –
Fabrizioありがとう! – GGcupie