【问题标题】:I want to convert base64_encode image into image我想将 base64_encode 图像转换为图像
【发布时间】:2016-10-03 10:26:52
【问题描述】:

我正在使用 codeIgniter 并想在图像上创建一个动态文本,一切正常,但我很困惑如何为图像上的文本创建一个文本框以及如何将该图像转换为真实图像,这是我的代码。

public function convertimage()
{
    ob_start();
    $font = realpath(APPPATH . '../assets/fonts/OpenSans-Regular.ttf');
    $string = 'here is my text for image';

     $image = imageCreateFromJpeg(base_url('assets/images/winer.jpg'));
     $white = imagecolorallocate($image, 255, 255, 255);

     imagettftext($image, 20, 0, 400, 160, $white, $font, $string);

     imagejpeg($image,NULL,100);
     $rawImageBytes = ob_get_clean();
     echo "<img class='img-responsive' src='data:image/jpeg;base64," . base64_encode( $rawImageBytes ) . "' />";
    imagedestroy($image);
}

我想将此行图像转换为真实图像。

<img class='img-responsive' src='data:image/jpeg;base64," . base64_encode( $rawImageBytes ) . "' />

【问题讨论】:

标签: php image codeigniter ob-start


【解决方案1】:

要将 base64 编码的图像保存到基于文件的图像中,您可以像这样使用 smth(如果您的意思是“转换为真实图像”):

    $base64stream = 'data:image/png;base64,iVBORw0K...';
    $imgPath = '/your/image/path/including/name.png';

    list($type, $base64stream) = explode(';', $base64stream);
    list($base, $base64stream)      = explode(',', $base64stream);
    $data = base64_decode($base64stream);

    file_put_contents($imgPath, $data);

编辑:我从未尝试过,但是快速搜索一下这样的事情可能会产生魔力:

function wrap($fontSize, $angle, $fontFace, $string, $width){
    $ret = "";
    $arr = explode(' ', $string);
    foreach ( $arr as $word ){
        $teststring = $ret.' '.$word;
        $testbox = imagettfbbox($fontSize, $angle, $fontFace, $teststring);
        if ( $testbox[2] > $width ){
            $ret.=($ret==""?"":"\n").$word;
        } else {
            $ret.=($ret==""?"":' ').$word;
        }
    }
    return $ret;
}

【讨论】:

  • 什么是 $type 和 $base..? list($type, $base64stream) = explode(';', $base64stream); list($base, $base64stream) = explode(',', $base64stream);
  • 你不需要的标准编码 base64 字符串的部分 - 使用 list() 两次的解决方案可能不是最漂亮的......你知道 list() 是如何工作的吗?我把这个例子从我用于某种情况的一个更大的方法中提取出来——在你的情况下,进一步处理不需要'data:image/png'和'base64'。
  • 我正在用这个函数在文本框上写文本 imagettftext($image, 20, 0, 400, 160, $white, $font, $string);感谢它的工作正常请告诉我如何在文本框上换行..?
  • 太好了,请接受答案。 “在文本框上换行”是什么意思?
  • 我想将我的文本放在图像上(动态文本),但想将文本保存在包装器中(它不应跨越包装器的宽度并自动转移到新行)。我该怎么办?
猜你喜欢
  • 2021-05-27
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 2015-12-31
  • 2011-02-01
相关资源
最近更新 更多