8

a を数値に変換する方法を理解しようとしcolor imageています。

たとえば、 に示すようなイメージがある場合、テキスト ファイルへのfigure (b)ような出力を取得するにはどうすればよいですか?figure (a)

ここに画像の説明を入力

4

2 に答える 2

2

Mehdi Karamosly が彼の回答で言及したものをここに取り、それを少し類似するように変更し、出力の好みに合わせて変更できる単純な html 出力を作成しました。セキュリティを追加したい場合は、ファイル/実際のイメージであることを確認するために、さらにデータ チェックを追加することをお勧めします。私は自分のコンピューターでそれをチェックアウトしましたが、うまくいきます。

function graycolor($img){
    list($width, $height) = getimagesize($img);
    $mime = pathinfo($img, PATHINFO_EXTENSION);
    switch($mime){#use appropriate function depending on image type
        case 'jpg':
        case 'jpeg':
            $im = imagecreatefromjpeg($img);
            break;
        case 'png':
            $im = imagecreatefrompng($img);
            break;
        case 'gif':
            $im = imagecreatefromgif($img);
            break;
        default:
            #invalid type
            exit;
    }
    if(!is_color($img, $im)){#$img = string; $im = resource string
        $ret = "";
        for($i = 0; $i < $height; $i++){#loop height pixels
            for($ii = 0; $ii < $width; $ii++){#loop width pixels
                $color = imagecolorat($im, $ii, $i);
                $color = imagecolorsforindex($im, $color);
                $ret .= $color['red'] . " ";
            }
                $ret .= "\n";
        }
        return $ret;
    }else{
        #$ret = "";
        #for($i = 0; $i < $height; $i++){#loop height pixels
            #for($ii = 0; $ii < $width; $ii++){#loop width pixels
                #$color = imagecolorat($im, $ii, $i);
                #$color = imagecolorsforindex($im, $color);
                #$ret .= $color['red'] . ", " . $color['green'] . ", " . $color['blue'] . " ";
            #}
                #$ret .= "\n";
        #}
        return "color image";
    }

}
function is_color($img, $im){
    $times = 10;#number of times to check image for color
    $iscolor = false;
    list($width, $height) = getimagesize($img);
    for($i = 0 ; $i < $times && !$iscolor; $i++){
        $color = imagecolorat($im, rand(0, $width), rand(0, $height));#get random cords
        $color = imagecolorsforindex($im, $color);#get the random color's values
        if($color['red'] !== $color['green'] || $color['green'] !== $color['blue']){
            $iscolor = true;
            break;
        }
    }
    return $iscolor;
}

echo graycolor('color.jpg');#outputs color image
echo graycolor('gray.jpg');#outputs numbers
于 2013-07-11T06:21:11.600 に答える
2

今、あなたはグレーレベルの画像について話している.カラー画像にそれをしたい場合、各ピクセルは0から255までの3つの数字を持つ. (赤: 0-255, 緑: 0-255, 青: 0-255)

グレースケール画像に興味がある場合、知っておく必要がある重要なルールの 1 つは次のとおりです。

// r = B = G の場合、ピクセルはグレースケールです

この投稿に基づいています。

このphp関数を見てください:

http://php.net/manual/en/function.imagecolorat.php

于 2013-07-10T23:25:08.983 に答える