PHP 画像を文字列に変換する方法: 1. php_imagick 拡張機能をインストールします; 2. 「関数 img2str($img_src,$width_index,$height_index){...}」を通じて画像を文字列に変換します。方法は以上です。
この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター
php画像を文字列に入れますか?
php でイメージ画像を文字列に変換する (GD ライブラリの操作と imagick の 2 つの実装方法)
php で imagick 拡張機能を勉強する 2 日前 そのとき、非常に興味深い小さな関数を思いつきました。ここに記録します:
画像を文字列に変換するには、まずレンダリングをアップロードします。 (メモにあるコードを実行するには、まず php_imagick をインストールする必要があります。拡張機能のチュートリアルは、ここにあります: PHP 拡張機能の Imagick インストール)
元の画像:
<?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='O80GCLft*+;:,. '; 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()['r']*0.3 + $pixel->getColor()['g']*0.59 + $pixel->getColor()['b']*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('huawei.jpg',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['red']; $str='O80GCLft*+;:,. '; $r = $gray/255; $offset=(int)ceil($r*(strlen($str)-1)); echo $str[$offset]; } } echo "\n"; } } } img2str("./huawei.jpg",1,2);
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHP画像を文字列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。