代码之家  ›  专栏  ›  技术社区  ›  Anatoliy

如何使用php垂直/水平翻转文本?

  •  1
  • Anatoliy  · 技术社区  · 14 年前

    有人知道如何做到这一点吗?

    5 回复  |  直到 14 年前
        1
  •  1
  •   Community Dai    4 年前

    imagerotate :

    旋转中心是图像的中心,并且旋转后的图像可能具有与原始图像不同的尺寸。

    镜子 this 代码段有帮助(不过,它的性能不是很好,因为它逐像素复制。)

    对于快速高级图像编辑操作, ImageMagick

        2
  •  1
  •   John    14 年前

    here ,也可以使用 ImageMagick

        3
  •  1
  •   vicatcu    14 年前

    未经测试。。。但这似乎应该起作用,由其他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 ) 从一个文本字符串创建一个图像,然后通过我上面写的适当的翻转函数运行它。。。

        4
  •  1
  •   Uwe Schmelzer    10 年前

    要在PHP中将垂直文本添加到现有图像中,请使用函数

    imagettftext($im, 10, $angle, $x, $y, $black, $font, $text);
    

    http://www.php.net/manual/en/function.imagettfbbox.php#refsect1-function.imagettfbbox-returnvalues

    提示:

        5
  •  0
  •   Byron Whitlock    14 年前

    也许就这么简单?

    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)