有谁知道如何实现这个目标?
答案 0 :(得分:1)
我假设你的标签意味着翻转GD图像。
你的意思是翻转吗?这可以使用imagerotate
:
使用给定角度(以度为单位)旋转图像图像。
旋转中心是图像的中心,旋转的图像可能具有与原始图像不同的尺寸。
或者你的意思是镜像一个图像?没有开箱即用的方法,但也许this代码片段有帮助。 (但它不是非常高效,因为它逐个像素地复制。)
对于快速高级图像编辑操作,ImageMagick是最好的工具。如果您使用的是共享主机,则需要由您的提供商安装才能正常工作。
答案 1 :(得分:1)
您可以使用某种类型的字体替换技巧,例如here,或者您可以使用PHP版ImageMagick。
答案 2 :(得分:1)
未经测试......但这似乎应该有效,由其他gd函数组成(可能很慢):
function flipImageHorizontal($im){
$width = imagesx($im);
$height = imagesy($im);
for($y = 0; $y < $height; $y++){ // for each column
for($x = 0; $x < ($width >> 1); $x++){ // for half the pixels in the row
// get the color on the left side
$rgb = imagecolorat($im, $x, $y);
$colors = imagecolorsforindex($im, $rgb);
$current_color = imagecolorallocate($im, $colors["red"], $colors["green"], $colors["blue"]);
// get the color on the right side (mirror)
$rgb = imagecolorat($im, $width - $x, $y);
$colors = imagecolorsforindex($im, $rgb);
$mirror_color = imagecolorallocate($im, $colors["red"], $colors["green"], $colors["blue"]);
// swap the colors
imagesetpixel($im, $x, $y, $mirror_color);
imagesetpixel($im, $width - $x, $y, $color);
}
}
}
function flipImageVertical($im){
$width = imagesx($im);
$height = imagesy($im);
for($x = 0; $x < $width; $x++){ // for each row
for($y = 0; $y < ($height >> 1); $y++){ // for half the pixels in the col
// get the color on the top
$rgb = imagecolorat($im, $x, $y);
$colors = imagecolorsforindex($im, $rgb);
$current_color = imagecolorallocate($im, $colors["red"], $colors["green"], $colors["blue"]);
// get the color on the bottom (mirror)
$rgb = imagecolorat($im, $x, $height - $y);
$colors = imagecolorsforindex($im, $rgb);
$mirror_color = imagecolorallocate($im, $colors["red"], $colors["green"], $colors["blue"]);
// swap the colors
imagesetpixel($im, $x, $y, $mirror_color);
imagesetpixel($im, $x, $height - $y, $color);
}
}
}
所以你可以使用bool imagestring ( resource $image , int $font , int $x , int $y , string $string , int $color )
从文本字符串创建一个图像,然后通过我上面写的相应翻转函数运行它......
答案 3 :(得分:0)
也许这么简单?
function toVertical ($string)
{
foreach (str_split($string) as $letter)
{
$newStr.="$letter\n";
}
return $newStr;
}
function toHorizontal($string)
{
foreach(explode("\n",$string) as $letter)
{
$newStr.=$letter;
}
return $newStr;
}
$v = toVertical("This string should be printed vertically");
echo $v;
$h = toHorizontal($v);
echo $h;
---------- PHP Execute ----------
T
h
i
s
s
t
r
i
n
g
s
h
o
u
l
d
b
e
p
r
i
n
t
e
d
v
e
r
t
i
c
a
l
l
y
This string should be printed vertically
Output completed (0 sec consumed)
答案 4 :(得分:0)
要在PHP中将垂直文本添加到现有图像,请使用函数
imagettftext($im, 10, $angle, $x, $y, $black, $font, $text);
$ angle = 90时,文字将是垂直的。
示例:
http://www.php.net/manual/en/function.imagettfbbox.php#refsect1-function.imagettfbbox-returnvalues
提示:
该示例使用$ angle = 45,因此文本在图像上是对角线