我需要帮助。
我正在使用PHP库GD创建图像:
$image = imagecreatefrompng('http://polariton.ad-l.ink/8rRSf4CpN/thumb.png');
$w = imagesx($image);
$h = imagesy($image);
$border = imagecreatefrompng('https://www.w3schools.com/css/border.png');
// New border width
$x1 = $w;
$x2 = 28;
$x3 = (int)($x1 / $x2);
$x4 = $x1 - $x3 * $x2;
$x5 = $x4 / $x3;
$x2 = $x2 + $x5;
$bw = $x2;
// New border height
$y1 = $h;
$y2 = 28;
$y3 = (int)($y1 / $y2);
$y4 = $y1 - $y3 * $y2;
$y5 = $y4 / $y3;
$y2 = $y2 + $y5;
$bh = $y2;
// New image width and height
$newWidth = (int)$w * (1 - ((($bw * 100) / (int)$w) / 100 * 2));
$newHeight = (int)$h * (1 - ((($bh * 100) / (int)$h) / 100 * 2));
// Transparent border
$indent = imagecreatetruecolor($w, $h);
$color = imagecolorallocatealpha($indent, 0, 0, 0, 127);
imagefill($indent, 0, 0, $color);
imagecopyresampled($indent, $image, $bw, $bw, 0, 0, $newWidth, $newHeight, $w, $h);
// Vertical border
$verticalX = 0;
$verticalY = $bh;
while ($verticalY < $h - $bh) {
// Left
imagecopy($indent, $border, $verticalX, $verticalY, 0, 27, $bh, $bh);
// Right
imagecopy($indent, $border, $w - $bw, $verticalY, 0, 27, $bh, $bh);
$verticalY += $bh;
}
// Horizontal border
$horizontalX = $bw;
$horizontalY = 0;
while ($horizontalX < $w - $bw) {
// Top
imagecopy($indent, $border, $horizontalX, $horizontalY, 0, 27, $bw, $bw);
// Bottom
imagecopy($indent, $border, $horizontalX, $h - $bh, 0, 27, $bw, $bw);
$horizontalX += $bw;
}
// Left top border
imagecopy($indent, $border, 0, 0, 0, 0, $bw, $bh);
// Right top border
imagecopy($indent, $border, $w - $bw, 0, 0, 0, $bw, $bh);
// Right bottom border
imagecopy($indent, $border, $w - $bw, $h - $bh, 0, 0, $bw, $bh);
// Left bottom border
imagecopy($indent, $border, 0, $h - $bh, 0, 0, $bw, $bh);
// Save result
header('Content-Type: image/png');
imagepng($indent);
Idk为什么,我按照文档中的说法做了所有事情。
可能是什么问题?有人可以帮忙解决吗? 谢谢你的关注。
答案 0 :(得分:2)
JPEG文件不支持透明度。
您可以尝试其他格式,例如PNG。
您需要对代码进行一些小改动,以便在创建新图像资源后立即调用imagesavealpha
,以使输出保持Alpha通道透明度:
...
$indent = imagecreatetruecolor($w, $h);
imagesavealpha($indent, true);
...
然后改变你的最后两行:
header('Content-Type: image/png');
imagepng($indent);