イメージGDライブラリを使用して、XORフィルタを使用して線を描画しようとしています。私はこれを行う簡単な方法を見つけることができませんでしたので、描かれている線が白と黒とに分かれています。どんな解決策ですか?imagelineとXORを使用するPHP
4
A
答えて
1
imageline
PHP関数が組み込まれたXORラインを描画することはできません。あなたはimagesetpixel
とカスタムライン描画アルゴリズムでそれを描くことができます。例えば、このようなものは、(PHPのためのブレゼンハムラインAlgorythm)を操作できます。
function line($im,$x1,$y1,$x2,$y2) {
$deltax=abs($x2-$x1);
$deltay=abs($y2-$y1);
if ($deltax>$deltay) {
$numpixels=$deltax+1;
$d=(2*$deltay)-$deltax;
$dinc1=$deltay << 1; $dinc2=($deltay-$deltax) << 1;
$xinc1=1; $xinc2=1;
$yinc1=0; $yinc2=1;
} else {
$numpixels=$deltay+1;
$d=(2*$deltax)-$deltay;
$dinc1=$deltax << 1; $dinc2=($deltax-$deltay)<<1;
$xinc1=0; $xinc2=1;
$yinc1=1; $yinc2=1;
}
if ($x1>$x2) {
$xinc1=-$xinc1;
$xinc2=-$xinc2;
}
if ($y1>$y2) {
$yinc1=-$yinc1;
$yinc2=-$yinc2;
}
$x=$x1;
$y=$y1;
for ($i=0;$i<$numpixels;$i++) {
$color_current = imagecolorat ($im, $x, $y);
$r = ($color_current >> 16) & 0xFF;
$g = ($color_current >> 8) & 0xFF;
$b = $color_current & 0xFF;
$color = imagecolorallocate($im, 255 - $r, 255 - $g, 255 - $b);
imagesetpixel($im,$x,$y,$color);
if ($d<0) {
$d+=$dinc1;
$x+=$xinc1;
$y+=$yinc1;
} else {
$d+=$dinc2;
$x+=$xinc2;
$y+=$yinc2;
}
}
return ;
}
機能が完全にファイルから作成されたイメージのために動作します。
+0
私は自分自身でその解決策を発見しました。それはちょうど遅れています。誰かがより迅速な解決策を知っていることを期待していました。 (イメージラインを使用して) –
関連する問題
- 1. PHP 5.2.xと5.3.x
- 2. Apache/PHPでのX-Sendfileの使用
- 3. 生産用のLAMPスタック? PHP 5.4.x、Apache 2.4.x、MySQL 5.5.xを使用しています
- 4. PHPを使用してGROUP_CONCAT( 'column x')の値を返す
- 5. "X x(42)"と "X x = 42"を使用したオブジェクト構成の違い?
- 6. Mac OS XでLPコマンドを使用するPHP execが失敗する
- 7. x IN(5)とWHERE x = 5 ...なぜINを使用するのですか?
- 8. PHPとNginx X-Accel-Redirect
- 9. PHPとhtaccessを使用するバニティURL
- 10. PHPとJavaでソケットを使用する
- 11. PHPとPythonを使用するクライアントサーバーアプリケーション
- 12. PHPとMySQLのアイコンを使用する
- 13. PHP 5.2を使用して日付にX週を追加する
- 14. ImageMagick Mac OS XでPHPモジュールを使用したBrewインストール
- 15. X-Sendfileを使用したPHPファイルの提供
- 16. PHP - ライブラリを使用せずに緯度と経度をxとyに変換する
- 17. EnableTemplateEngineを使用するとSendgrid X-SMTP-APIがエラーを返す
- 18. FUN = function(x){}でtapplyを使用する
- 19. Netty 3.xでHttpPostRequestDecoderを使用する
- 20. 「X = int(&)()を使用する」とは何ですか?
- 21. setModelValue()を使用する方法。 6. xまたは7.x?
- 22. buildsbtでtemplates.batをPlayframework 2.5.xで使用する方法012.x
- 23. "x * = -1"を使用する利点"x * = -1"以上?
- 24. プラグインを使用してffmpegを統合するOS XとLinux
- 25. ImageLine、imagecreatetruecolorが正しく動作しない
- 26. PHPで定数を使用する時期と使用方法
- 27. Mac OS X端末でコマンドをctrlとして使用する
- 28. 角度1.xで$ templateCacheをui-routerとuglifyで使用する
- 29. repeatUtil()私は、次のコードを使用するとRxjava 2.xの
- 30. 1.xとwebpackのテンプレートを使用する方法
XORフィルターが何であるか説明してください –
@マーク - 描画したいキャンバス上の点の色にペンの色をコピーするのではなく、その色でXORしてそこに結果を入れます。あなたが何かを描く前に同じことを2回行うと、あなたがそこにいたキャンバスに同じ色が得られます。 –