我想将图像与自己的翻转图像合并,并以-60度的角度旋转。
假设我有1000 * 1000像素的图像 答:原始图像尺寸调整为500 * 500px,并放置在1000 * 1000方框的右下部 B:相同的图像翻转并旋转-600度并放置在1000 * 1000方框的左上角
一切正常,但问题就像 1:旋转图像的某些边框 2:旋转后的背景越暗越看起来很奇怪
测试用例:
示例图片(缩略图已调整大小,点击打开原始图片):
输出图片:
以下是我的代码
$image1=$image2=imagecreatefrompng('a.png');
//filter_opacity( $image1, 25 );
$w=imagesx($image1);
$h=imagesy($image1);
$finala = imagecreatetruecolor($w, $h);
$finalb = imagecreatetruecolor($w, $h);
$finalc = imagecreatetruecolor($w, $h);
$backgroundColora = imagecolorallocate($finala, 250,252,252); // gray
$backgroundColorb = imagecolorallocate($finalb, 250,250,250); // gray
$backgroundColorc = imagecolorallocate($finalc, 250,250,250); // gray
imagefill($finala, 0, 0, $backgroundColora);
imagefill($finalb, 0, 0, $backgroundColorb);
imagefill($finalc, 0, 0, $backgroundColorc);
$percent = 0.583;
$new_width = $w * $percent;
$new_height = $h * $percent;
$wshift = $w/8.5;
$hshift = $h/2.5;
imagecopy($finala, $image1, 0,0,0,0,$w,$h);
imagecopyresampled($finala, $image2,$wshift,$hshift,0,0, $new_width, $new_height, $w, $h);
imagecopy($finalc, $image1, 0,0,0,0,$w,$h);
imagecopyresampled($finalc, $image2,$wshift,$hshift,0,0, $new_width, $new_height, $w, $h);
imagecopyresampled($finalb, $finalc,$w*0.3,$h*0.3,0,0, $w*0.6, $h*0.6, $w, $h);
imageflip($finala, IMG_FLIP_HORIZONTAL );
$finala = imagerotate($finala, -60, imageColorAllocateAlpha($finala, 0, 0, 0, 127));
imagecopyresampled($finalb, $finala,-$w*0.1,-$h*0.1,0,$h*0.20, $new_width, $new_height, $w, $h);
header('Content-Type: image/jpeg');
imagejpeg($finalb);
imagedestroy($finala);
imagedestroy($image2);
imagedestroy($image1);
imagedestroy($final);
答案 0 :(得分:0)
当您需要旋转并在顶部和底部放置相同的图像时,您无需使用$ _GET两次传递相同的图像单次就足够了
bootstrap(..., [OtherProviders, HTTP_PROVIDERS, MyService])
答案 1 :(得分:0)
更改此行:
$finala = imagerotate($finala, -60, imageColorAllocateAlpha($finala, 0, 0, 0, 127));
到
$finala = imagerotate($finala, -60, imageColorAllocateAlpha($finala, 250, 252, 252, 127));
黑板应该不见了!