問題タブ [bitmap]
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.
actionscript-3 - Papervision ビットマップへのレンダリング
Papervision レンダラーを使用して 3D シーンをビットマップにレンダリングする方法を知っている人はいますか? バックグラウンドでシーンを変更しながら表示できるシーンのフリーズ フレームを取得したいと考えています。
flash - Flash/ActionScript: 表示オブジェクトを別のオブジェクトの上に描画します
位置や透明度などを考慮して、ActionScript で別のベクトル オブジェクトの特定の位置に適切に描画するにはどうすればよいですか?
私のアイデア (たとえばここで提案されているようにbeginBitmapFill
) を () と() を使用して、1 つのムービークリップdrawRect
のビットマップ コピー (() を使用して作成) を に描画することでした。他の MovieClip のプロパティですが、主に次の理由から、これは思ったより難しいことがわかりました。BitmapData.draw
graphics
透明度は保持されません: ソース MovieClip が透明な場合、ターゲット Graphics は白になります。を使用してみました問題は、BlendMode
が、役に立ちません。白いピクセルが実際に BitmapData にコピーされているようです。何かが欠けているに違いないのですが、何がわかりません。BitmapData
コンストラクターのドキュメントが間違っていることだったようです: 透明度のデフォルトはtrueではなく、 falseです。したがって、new BitmapData(x, y, true)
透明度を作成すると保持されますが、そうでない場合は保持されません。ポジショニング。ソース MovieClip が中央に配置されている場合 (中心が (0, 0) の場合、BitmapData にコピーするときに Matrix を適用して移動する必要があります。そうしないと、ビットマップにはソース MovieClip の右下のみが含まれます。方法を理解する移動するのは非常に難しく、どうにかして境界を取得する必要があると思います (ソース オブジェクトがキャンバス内で完全に中央に配置されている場合は、もちろん、幅と高さの半分だけオフセットすることができます)。
beginBitmapFill
タイリング。drawRect
() を (0, 0) から開始しないと、ビットマップの塗りつぶしもビットマップ内の (0, 0) から開始されないようです。これは、描画を開始する場所に基づいて、ソース ビットマップをもう一度シフトする必要があることを意味します。
(次に、lineStyle(0,0,0) にする必要があるような他のものがあるため、drawRect() は境界線などを描画しません。)
このトリッキーな問題はすべて、私がこれを間違った方法で行っていると信じさせてくれます。これを行う簡単な方法はありますか?私を助けることができる図書館はどこかにありますか?誰もこれを成功させましたか?おそらく、私の描画キャンバスはスプライトではなくビットマップであるべきですか? lineTo
しかし、 () などを使用して描画する方法がわかりません。
状況は次のとおりです。.graphics を使用して、lineTo() などを使用して描画するスプライトがあります。描画時に MovieClip をブラシとして使用したい (または描画面に別の MovieClip のコピーを配置するだけ)。他のムービークリップを最初のグラフィックの一部にします。addChild
ベクトル グラフィックスが描画されたグラフィックスと相互作用しないため、()はできません。
EDIT : Theoは、Graphics サーフェスに描画される DisplayObject に適用される回転とスケーリングを適用しないという事実を除いて、完全に機能する実用的なソリューションを提供しました。これはテオの解決策です:
回転とスケーリングをサポートするには、以下を変更する必要があると思います。
- で使用
Matrix
されるdraw()
は、ソースからスケーリングと回転をコピーする必要がありますDisplayObject
か? - で使用
Matrix
される は、beginBitmapFill()
このスケーリングと回転もコピーする必要がありますか? それとも、「二重」のスケーリングと回転が作成されるのでしょうか? - 座標は
drawRect()
、スケーリングおよび回転されたサイズに合わせて変更する必要がありDisplayObject
ますか? どの手段getBounds()
が正確ではないでしょうか?
編集:これは、すべてのフィードバックから作成された、スケーリングと回転をサポートする実用的な実装です:
やや関連しているがそれほどホットではない質問: Flex 3 のグラフィックスに画像 (PNG など) を配置する方法は?
iphone - iPhoneでBitmapContextからARGBコンポーネントを引き出す方法は?
次のコードを使用して、CGBitmapContext から ARGB コンポーネントを取得しようとしています。
}
赤/緑/青を保存しようとすると、常に 240 であることがわかります。また、アルファは常に 255 です。
したがって、ポインターに問題がある可能性があると思います。必要な正しい ARGB データを返すことができませんでした。コードの何が問題なのかについてのアイデアはありますか?
iphone - CGBitmapContextDataを読み取る方法は?(iPhoneの場合)
画像からARGBのようなビットマップデータを取得する作業をしています。
a)。画像のビットマップコンテキストを作成します。
b)。画像をコンテキストに合わせて描画します。
c)。次に、bitmapcontextからデータを取得します。
d)。ボイド...読めない?
画像コンテキストデータへのvoidポインタのみが返されることがわかりました。これは、コンテキストのデータを取得できないことを意味します(writeOnly)。コンテキストデータから値を返す他の方法はありますか?
PS:unsigned charポインタ*データを作成すると、RGBの場合は240、アルファの場合は255が返されますが、これは正しい色成分ではありません。
c# - .NET で大きなビットマップを使用するにはどうすればよいですか?
軽量の画像表示アプリケーションを作成しようとしています。ただし、.NET にはシステム メモリの制限があります。
大きなビットマップ ( 9000 x 9000 ピクセル以上、24 ビット)を読み込もうとすると、System.OutOfMemoryException が発生します。これは、2GB の RAM を搭載した Windows 2000 PC 上にあります (そのうち 1.3GB が使用されています)。また、ファイルのロードを試みるのにも多くの時間がかかります。
次のコードは、このエラーを生成します。
次のコードも同様です。
また、これを行うだけで十分です。
後者のコードは、GDI で使用するためのものです。これを調査しているときに、これは実際にはメモリの問題であり、.NET が 1 つの連続したメモリ ブロックで必要な量の 2 倍を割り当てようとすることがわかりました。
http://bytes.com/groups/net-c/279493-drawing-large-bitmaps
私は、他のアプリケーション (Internet Explorer、MS ペイントなど) から、大きな画像をすばやく開くことができることを知っています。私の質問は、.NET で大きなビットマップを使用するにはどうすればよいですか?
それらをストリーミングしたり、メモリ以外でロードしたりする方法はありますか?
c# - Compact Framework (C#) でのサイズ変更 (ズームインおよびズームアウト)
Compact Framework でビットマップを拡大するにはどうすればよいですか? この記事とhttp://geeks.netindonesia.net/blogs/clawford/archive/2008/04/20/resizing-bitmap-tutorial-in-net-cf.aspxを読みましたが、ビットマップを小さくするだけです。
ありがとうございました!
c# - モノクロ ビットマップ ピクセル カラーの読み取り
より適切なタイトルはわかりませんが、問題について説明します。
私たちが使用するハードウェアには、画像を表示する機能があります。64 x 256 の解像度で白黒画像を表示できます。
問題は、デバイスに送信する必要がある画像の形式です。これは標準のビットマップ形式ではなく、画像の各ピクセルを表す単純なバイト配列です。
0 = 黒、1 = 白。
したがって、サイズが 4 x 4 の画像がある場合、バイト配列は次のようになります。
1000 0100 0010 0001
画像は次のようになります。
ビットマップ http://www.mediafire.com/imgbnc.php/6ee6a28148d0170708cb10ec7ce6512e4g.jpg
問題は、C# でモノクロ ビットマップを作成してこのイメージを作成し、それをデバイスが理解できるファイル形式に変換する必要があることです。
たとえば、デバイスにテキストを表示する場合があります。そのためには、ビットマップを作成してテキストを書き込む必要があります。
ここには 2 つの問題があります。
- 生成されたビットマップはモノクロではありません
- 生成されたビットマップのバイナリ形式が異なります
したがって、次の方法が必要です。
- .NET でモノクロ ビットマップを生成する
- ビットマップ内の各ピクセルの個々のピクセル カラーを読み取る
ピクセル深度を 16、24、または 32 ビットに設定できることがわかりましたが、モノクロは見つからず、ピクセル データの読み取り方法もわかりません。
提案は大歓迎です。
更新: Win32 PInvokes を使用できません... プラットフォームに中立でなければなりません!
フォローアップ:次のコードは現在私にとってはうまくいきます。(必要な人がいる場合に備えて)
image-processing - OCAMLでビットマップを読み取る方法は?
OCAML を使用して (ファイル システムから) ビットマップ ファイルを読み取り、ビットマップの次元を持つ配列内にピクセル (色) を格納します。各ピクセルは配列内の 1 つのセルを取得します。
関数Graphics.dump_image image -> color array arrayを見つけました が、ファイルから読み取れません。