この方の投稿を見て興味を持ちました。
http://www.oschina.net/code/snippet_234517_15356
画像はデフォルトで 10 倍に拡大されるため、より鮮明に見ることができます...
OSC ロゴがテストでどのように機能するかを見てみましょう。
(写真は省略されています。このアドレスを新しいウィンドウで開くと写真が表示されます、2000*560
http://img.it-home.org/data/attachment/forum/2014pic/11033136_K1mt.png)
=============================================== ===
PNG、GIF、JPG を試してみましたが、それらはすべて通常どおり特徴付けることができます :)
- $txt =array('A','B','C','D','E','F','G','H','I', 'J','K');
- //元の画像を読み込みます
- $rawImage = ImageCreateFromGIF('logo.gif');
- //元の画像の幅と高さを取得します
- $rawImgWidth = ImagesX($rawImage);
- $rawImgHeigh = ImagesY($rawImage);
- //元の画像のグレースケールを取得します
- $grayData = getGrayData($rawImage,$rawImgWidth,$rawImgHeigh);
- //画像を破棄します
- ImageDestroy($rawImage);
- //作成text image
- $ txtImage = ImageCreate($rawImgWidth*6,$rawImgHeigh*9);
- //新しい画像の背景色
- imagecolorallocate($txtImage,0,0,0);
- //最大グレースケールを取得します
- for($ i=0; $i $maxGrayArray[$i] = max($grayData[$i]);
- }
- $maxGray = max($maxGrayArray);
- //グレースケールの対応を設定 Color
- for($i=0;$i<$maxGray+1;$i++){
- $color = 255-round(200/$maxGray)*$i+55;
- $gray[$i] = imagecolorallocate( $txtImage,$color,$color,$color);
- }
- // 文字を描画します
- for($y=0;$y<$rawImgHeigh;$y++){
- for($x=0;$ x<$ rawImgWidth;$x++){
- Imagechar($txtImage,1,$x*6,$y*9,$txt[rand(0,10)],$gray[$grayData[$x][$y] ]]) ;
- }
- }
- //最終画像を作成します
- $Image = ImageCreate($rawImgWidth*10,$rawImgHeigh*10);
- //画像をストレッチします
- imagecopyresampled($Image, $txtImage, 0, 0 , 0, 0 ,$rawImgWidth*10,$rawImgHeigh*10,$rawImgWidth*6,$rawImgHeigh*9);
- //ファイルヘッダーを定義
- header('Content-type: image/png');
- //出力image
- ImagePNG( $Image);
- //画像を破棄
- ImageDestroy($Image);
- /*
- グレー値を取得
- */
- function getGrayData($mImage,$mImgWidth,$mImgHeigh){
- for( $mY=0; $mY<$mImgHeigh;$mY++){
- for($mX=0;$mX<$mImgWidth;$mX++){
- $mRGB = Imagecolorat($mImage, $mX, $mY);
- $mR = ($ mRGB >> 16) & 0xFF;
- $mG = ($mRGB >> 8) & 0xFF;
- $mB = $mRGB & 0xFF;;
- $mGrayData[$mX][$ mY] = ($ mR * 19595 + $mG * 38469 + $mB * 7472) >> 16;
- }
- }
- return $mGrayData;
- }
- ?>
コードをコピー
|