ホームページ >バックエンド開発 >PHPの問題 >PHP画像を文字列に変換する方法

PHP画像を文字列に変換する方法

藏色散人
藏色散人オリジナル
2021-10-14 11:07:382846ブラウズ

PHP 画像を文字列に変換する方法: 1. php_imagick 拡張機能をインストールします; 2. 「関数 img2str($img_src,$width_index,$height_index){...}」を通じて画像を文字列に変換します。方法は以上です。

PHP画像を文字列に変換する方法

この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

php画像を文字列に入れますか?

php でイメージ画像を文字列に変換する (GD ライブラリの操作と imagick の 2 つの実装方法)

php で imagick 拡張機能を勉強する 2 日前 そのとき、非常に興味深い小さな関数を思いつきました。ここに記録します:

画像を文字列に変換するには、まずレンダリングをアップロードします。 (メモにあるコードを実行するには、まず php_imagick をインストールする必要があります。拡張機能のチュートリアルは、ここにあります: PHP 拡張機能の Imagick インストール)

PHP画像を文字列に変換する方法

元の画像:

PHP画像を文字列に変換する方法

<?php
/**
* 图片转换为字符图
* @param string $imagePath 图片地址
* @param int $width x轴方向缩放比例
* @param int $height y轴方向缩放比例
* @return string 生成的字符串图
*/
function img2String($imagePath,$width=1,$height=1)
{
    //检查是否安装 php_imagick 扩展
    if(!extension_loaded("imagick")){
        exit("请先安装 imagick 模块");
    }
    $imagick = new \Imagick(realpath($imagePath));
    //将生成的imagick对象转化为一个像素迭代器,可以从该迭代器中获取没个像素的 rgb 的值。不知道什么是rgb的请问度娘
    $imageIterator = new \ImagickPixelIterator($imagick);
     $str=&#39;O80GCLft*+;:,. &#39;;
    foreach ($imageIterator as $rows => $pixels) {
            if($rows%$width == 1 || $width == 1){
                echo "\n";
                foreach ($pixels as $column => $pixel) {
                    if($column%$height == 1 || $height == 1){
                        //灰度计算公式  某个像素点的灰度值 = 红色值*0.3 + 绿色值 * 0.59 + 蓝色值 * 0.11
                        $gray = $pixel->getColor()[&#39;r&#39;]*0.3 + $pixel->getColor()[&#39;g&#39;]*0.59 + $pixel->getColor()[&#39;b&#39;]*0.11;
                        //由于 rgb 三原色的数值范围在 [0,255] 所以求出的灰度值的范围也是 [0,255],所以我们计算像素的 "饱和度" = 灰度值/255;
                        $r = $gray/255;
                        //根据像素的 "饱和度" 选择合适的字符
                        $offset=(int)ceil($r*(strlen($str)-1));    
                        if($offset==(strlen($str)-1)){
                            echo " ";
                        }else{
                            echo $str[$offset];  
                        }
                    }         
                }
                $imageIterator->syncIterator();
            }    
    }
}
img2String(&#39;huawei.jpg&#39;,2,1);

コードをコピー

/**
* 图片转为字符串
* @param string $img_src 图片地址
* @param int $width_index 横向缩放比例
* @param int $height_index 纵向缩放比例
* @return string 生成的字符串
**/
function img2str($img_src,$width_index,$height_index){
    $resource = imagecreatefromjpeg($img_src);
    $width = imagesx($resource);
    $height = imagesy($resource);
    imagefilter($resource, IMG_FILTER_GRAYSCALE);
    for ($i=0; $i < $height; $i++) {
        if($i%$height_index==0){
            for ($j=0; $j < $width; $j++) {
                if($j%$width_index==0){
                    $color_index = imagecolorat($resource, $j, $i);
                    $rgb = imagecolorsforindex($resource,$color_index);
                    $gray = $rgb[&#39;red&#39;];
                    $str=&#39;O80GCLft*+;:,. &#39;;
                    $r = $gray/255;
                    $offset=(int)ceil($r*(strlen($str)-1));
                    echo $str[$offset];
                }
            }
            echo "\n";
        }
    }
}
img2str("./huawei.jpg",1,2);

推奨学習: 「PHP ビデオ チュートリアル

以上がPHP画像を文字列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。