問題タブ [raster-graphics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
graphics - アンチエイリアシングの代替手段
Windows で GDI+、Java、および Photoshop と Gimp によって提供されるものを使用したアンチエイリアシングを見てきました。ホスト OS からのサポートに依存せずにアンチエイリアシング機能を提供する他のライブラリはありますか?
printing - ベクトルオブジェクトが指定されたdpiと印刷サイズで印刷時に表示されるかどうかを確認する
ポリゴンのコレクションとおそらく他のベクターオブジェクトを含むファイル(GISで使用される* .shp)があります(ただし、ポリゴンは私にとって最も重要です)。印刷できないオブジェクトを削除する必要があります。
どの基準が選ばれたのかわかりません。境界線の長さが小さいオブジェクトを削除する方が、面積が小さいオブジェクトを削除するよりも良いと思います(長いオブジェクトは線になります)。しかし、おそらくそのための特別なアルゴリズムがありますか?
つまり、特定のズームレベルで表示されるオブジェクトのみを検索したいのです。
graphics - Shapes-ツールは毎回ベクトルマスクを作成しますが、CS3で修正できないようですか?
シェイプツールを使用してシェイプを作成するたびに、その上にベクターマスクが配置されます。これをどのように有効にしたかはわかりませんが、ラップトップバージョンでは機能せず、デスクトップのみで有効になります。
私が抱えているこの問題を無効にしているように見えることがあります。デフォルトを再インストールして復元しても、これを止めることはできないようです。
非常にイライラします、誰かがこの問題の修正を持っていますか?前もって感謝します!
printing - CAD をラスターに変換する
プリンターはどのようにしてベクトル CAD グラフィックスを紙のドットに変換しますか? 4095x4095 ポイントの「印刷」システムを備えた 50mmx50mm を使用していますが、それに CAD ファイルを印刷したいと思いますか? 既存の印刷システムを使用する必要がありますか? または、CAD ファイルを私の「プリンター」が理解できるものに変換します。
ありがとうございました
r - Rを使用したラスターイメージの作成
Rを使用して、データのマトリックスからラスターイメージを作成しようとしています。ただし、画像の端に奇妙なアーティファクトが発生しています。
私が使用しているコードは次のとおりです。
これはOSXのR2.12.0で実行されましたが、R2.11.0から同じ出力が得られます。
私が得ている出力は次のとおりです(5x3から150x90にスケーリング)
コーナーのピクセルは黒である必要があります。これは、何らかの補間が行われていることを示しています。
私が期待している出力は次のとおりです。
私のコードがマトリックスからラスター画像を忠実に生成できない理由について何か提案はありますか?
使用目的
これは私が取り組んでいるパッケージ用なので、追加の依存関係を導入しないように、可能であればRベースパッケージ内にとどまりたいと思います。パッケージはグラフィックスデバイスを実装しているので、渡された情報から経営幹部レベルのソリューションを取得しGERaster()
、src/main/engine.c
Rライブラリのみを使用してPNGを作成する場合は、そのショットも提供します。
OSXのソリューション
nicoが指摘しているように、誤った動作はアンチエイリアスの結果です。png()
Cairoグラフィックなど、アンチエイリアスを無効にできる出力メソッドを使用するように指示された場合、プロットは期待どおりに動作します。
OS Xでは、のデフォルトのバックエンドpng()
はQuartzですが、png(..., type='quartz')
現在、によって設定されたディレクティブは無視されquartz.options()
ます。quartz()
デバイスを使用せずに直接呼び出すことでデバイスを起動すると、OSXでネイティブに忠実な出力を生成できますpng()
。
Windowsの考え方は異なります
次の出力がWindowsで生成されます。
R-helpメーリングリストのPaulMurrell(Rグラフィックスデバイスの慈悲深い独裁者)による回答によると、次のようになります。
これは丸め(切り捨て)の問題です。修正に取り組んでいます。
ラスターイメージに含まれるピクセル数が非常に少ない場合を除いて、Windowsでのこの動作は目立たないはずです。
java - ラスターの結合
レイヤーをサポートするペイント ツールを実装しようとしています。レイヤーごとに WritableRaster を作成します。キャンバスを表示するには、レイヤーを結合する必要があります。これを行う最も効率的な方法は何ですか? bufferedImage を使用し、ラスターを設定して、アルファ合成を使用して各レイヤーを Graphics コンテキストに描画できます。しかし、データレベルでマージしてから単一の画像を描画する方が良い/高速ではありませんか?
編集:プロファイリングを行いました。これは私の現在のアプローチがどのように見えるかです:
以前は各レイヤーに WritableRasters の代わりに BufferedImages を使用していましたが、目立った遅延はありませんでした。
私の次のステップは、上部と下部のレイヤーをキャッシュすることです。そのため、描画される画像は 3 つだけになります。それはおそらく問題を解決するでしょう。
r - ラスター上のポイントでアーティファクトをプロットする
プロット ウィンドウのサイズを変更すると、奇妙な動作に気付きました。検討
ウィンドウのサイズを変更すると、プロットされたポイントは、下にあるラスターとは異なる範囲になります。ウィンドウとプロットのサイズを変更すると、プロットはうまくshrunk
いきますshrunk.coords
。誰でもこれを説明できますか?
javascript - Canvas で ROP を使用できますか? (私はパフォーマンス上の理由のみを気にします)
ですから...ゲームを作る古き良き時代には、画面にスプライトを描画するとき、ROP を使用してスプライトの「非透明」部分のみを描画していました。(はい、長い間ゲームのコーディングを行っていません)
(私が何を言っているのかわからない場合は、これをチェックしてください。これは美しいハックでした)
私は現在、いくつかの「HTML5 ゲーム」を実行しようとしています。さまざまな方法を試してパフォーマンスを測定していますが、Canvas に ROP がないように見えることに気付きました。何かを描くとき、その「何か」には完全なアルファ チャネルがあり、実際に半透明のものを描くことは、「不透明な」ものを描くのとまったく同じくらい高速です。
これは、半透明のものを描画している場合は素晴らしいことですが、99.999% の作業では、これは信じられないほど無駄に聞こえます。ROP があれば、おそらく 10 倍の速度で描画できるように感じます。古いマスクトリック。
ここで何か不足していますか?
キャンバスを「アルファをオフにして」描画を高速化する方法は既にありますか?
私は完全に頭がおかしいのでしょうか? これは問題ではありません。実際には、実際には既に 1000 個のスプライトを 3 ミリ秒 (300 FPS) で描画できます。さらに、ビデオ カードはおそらく直接それを実行しているか、すぐに実行するので、どうすればよいでしょうか?
どう思いますか?
ありがとうございました!
ダニエル
vector-graphics - ベクトル画像をラスタライズするための一般的なアルゴリズム
ベクトル画像をラスター化する一般的なアルゴリズムは何ですか?線、円、ベジェ曲線などのプリミティブをラスター化するアルゴリズムをたくさん見つけました。しかし、一般的には、どうすればよいですか?単純に、ベクター画像の各ベクター図形に移動し、そのピクセルを取得してラスターイメージに配置しますか?または、他の何か?
そして別の質問ですが、並行性を使用して処理時間を改善するにはどうすればよいですか?たとえば、ベクターフィギュアを分離し、同時にそれらのピクセルを取得することができます。しかし、おそらくこれを行う他の方法がありますか?
image-processing - Gimpの「ColortoAlpha」機能の背後にあるアルゴリズムは何ですか?
Gimpの「ColortoAlpha」機能にまだ慣れていない人のために、Gimpのドキュメントからのページがここにあります:ColortoAlpha。それは本当に良い仕事をします、そして私は色がどんな色空間にあっても、色操作に関してGimpがそれをどれほど正確に行うのか疑問に思います。ヒントをたくさんありがとう。
編集1:キーカラー([カラーからアルファ]ダイアログで選択したもの)との類似性に基づいてピクセルの透明度情報を生成することは、何らかの理由で答えを削除する前に提案されたように、良い洞察のように聞こえます、しかしそれよりも複雑だと思います。単位範囲0.0〜1.0で色の類似性を推定し、たとえば、白の色に似た色、たとえば0.4のピクセルがあるとします(「色アルファ」ダイアログ)、したがってピクセルは0.6のアルファ値を取得します。次に、結果のピクセルがアルファ0.6の白い背景に対して表示されるときに、明るさ/明るさ/彩度の緩みを補正するために、ピクセルの実際の色をどのように変更しますか?
編集2:実際の更新:最初の編集に関連するサブ質問は、結果の色を変更せずにピクセルのアルファを変更する方法で回答されていますか?しかし、「Color to Alpha」機能のGimpのソースで行われていることはそれほど単純ではなく、数式ではなく特定のアルゴリズムに基づいているように見えるため、おそらく完全な話ではありません。