Php kullanarak dikey / yatay metni çevirmek nasıl?

4 Cevap php

Herkes bunu başarmak için nasıl biliyor mu?

4 Cevap

Ben bir GD görüntüyü çevirmek demek ki senin etiketleri varsayarak yaşıyorum.

Döndürme gibi çevirmek demek istiyorsun? Bu kullanılarak yapılabilir imagerotate ,

Derece verilen açıyı kullanarak görüntü döndürür.

Dönme merkez görüntü merkezi ve döndürülmüş görüntü, orijinal görüntünün farklı boyutlara sahip olabilir.

Yoksa mirror bir görüntü demek? Orada kutudan bunun için bir yöntem var, ama belki this kod parçacığı yardımcı olur. (Çok ölçülebilir değil, olsa, piksel kopyalar piksel çünkü.)

Hızlı gelişmiş resim düzenleme işlemleri için, ImageMagick çevresinde en iyi araçtır. Paylaşılan barındırma iseniz, o iş için sağlayıcı tarafından yüklü olması gerekmektedir.

Sen here gibi yazı-ikame hile çeşit kullanabilir, ya da size PHP sürümünü kullanabilirsiniz ImageMagick.

Denenmemiş ... ama bu diğer gd işlevleri (belki yavaş yavaş) oluşan, çalışmak gerektiğini gibi görünüyor:

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);         
    }
  }
}

Yani ben yukarıda yazdım uygun kapak işlevi aracılığıyla çalıştırmak sonra, bir metin dizesi bir görüntü oluşturmak için bool imagestring ( resource $image , int $font , int $x , int $y , string $string , int $color ) kullanabilirsiniz ...

Belki de bu kadar basit bir şey mi?

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)