確認
半角→@
全角→@
仕様らしい…そういうもん?
なんか紛らわしいような。
半角のつもりが全角入ったりしそうだけど、昨今の状況では影響が少ないと判断したのだろうか。半角→@
全角→@
参考
http://answers.microsoft.com/ja-jp/windows/forum/windows_7-ime/%E3%83%A1%E3%82%A4%E3%83%AA%E3%82%AA%E3%81%AE/d4e14eee-b290-4fc6-867c-8561fd8742d6
/** * 引数の$pathにあるファイル(アルファ付png想定)を$mattColorをマット色とした単色透過に変換 * @param string $path * @param string $mattColor "00ff00" // #なし16進数表現 * @return Imagick */ $effectMatt = function ($path, $mattColor) { $im = new Imagick($path); // mattColorのrgb表現を作っておく(かけ合わせ用) $mattRgb = array( 'r' => hexdec((int)substr($mattColor, 1, 2)), 'g' => hexdec((int)substr($mattColor, 3, 2)), 'b' => hexdec((int)substr($mattColor, -2)) ); // 色のアルファ合成関数 $combineAlpha = function ($dst, $src, $srcAlpha) { $res = $dst * (1.0 - $srcAlpha) + $src * $srcAlpha; return min(255, (int)$res); }; // 画像中の各ピクセルごとに処理 $imIte = $im->getPixelIterator(); foreach ($imIte as $iteY => $row) { foreach ($row as $iteX => $pixel) { // trueにするとdouble値、defaultのfalseは整数が返る $normalized = true; $tmp = $pixel->getColor($normalized); // r, g, b, a // 0.0=完全透明の場合と、1.0=完全不透明の場合はskip if (0.0 < $tmp['a'] && $tmp['a'] < 1.0) { $color = $pixel->getColor(! $normalized); // 0-255で再取得 $color = array( 'r' => $combineAlpha($mattRgb['r'], $color['r'], $tmp['a']), 'g' => $combineAlpha($mattRgb['g'], $color['g'], $tmp['a']), 'b' => $combineAlpha($mattRgb['b'], $color['b'], $tmp['a']) ); // setColor用引数文字列作成 $colorf = "rgb({$color['r']},{$color['g']},{$color['b']})"; $pixel->setColor($colorf); $i++; } } // 本画像へ反映 $imIte->syncIterator(); } return $im; };・マット色