問題タブ [nsbitmapimagerep]

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.

0 投票する
1 に答える
1090 参照

image - 256色パレットRGBA画像データをNSImageに変換する方法

私は初心者の開発者であり、おそらくあなたにとって些細なことであなたの助けが必要です.

このピクセル形式の画像データがあります: 256 色のパレット化された RGBA。これは FFmpeg から来て(PIX_FMT_PAL8)おり、次のように説明されています。

PIX_FMT_RGB32 は、エンディアン固有の方法で処理されます。RGBA カラーは次のようにまとめられます。

(A << 24) | (R << 16) | (G << 8) | B

これは、リトル エンディアンの CPU アーキテクチャでは BGRA として保存され、ビッグ エンディアンの CPU では ARGB として保存されます。

ピクセル形式がパレット化された RGB (PIX_FMT_PAL8) の場合、パレット化された画像データは AVFrame.data[0] に格納されます。

パレットは AVFrame.data[1] で転送され、長さは 1024 バイト (256 個の 4 バイト エントリ) で、上記の PIX_FMT_RGB32 と同じようにフォーマットされます (つまり、エンディアン固有でもあります)。AVFrame.data[1] に格納されている個々の RGB パレット コンポーネントは、0..255 の範囲内にある必要があることにも注意してください。

AVFrame 構造体には と が含まれuint8_t *data[4]int linesize[4]おり、次のように簡単に説明されています。

  • uint8_t *data[4]= ピクチャ プレーンへのポインタ
  • 4 つのコンポーネントが与えられます。それだけです。
  • 最後のコンポーネントはアルファです
  • int linesize[4]= 1 行あたりのバイト数

必要なすべてのデータを含む AVFrame 構造体がありますが、それを処理する方法がわかりません。この画像データから NSImage を作成する必要があります。

これどうやってするの?

0 投票する
2 に答える
1489 参照

macos - NSBitmapImageRep を高効率で RGB に変換

私は CVImageBufferRef (QTKit を使用してキャプチャ) がある 10.5+ 用の最初の mac osx cocoa アプリに取り組んでいます。このイメージを TCP ソケット経由でクライアント アプリに転送する必要があります。クライアント アプリには RGB 値が必要です。これが私が現在行っていることです(私の現在のソリューションは必要に応じて機能しますが、多くのCPUを使用します)

CVImageBufferRef --> NSBitmapImageRep --> NSData --> 次に、TCP Socket 経由で NSData をクライアント アプリに送信し、クライアント側で RGB を取得する次のコードを作成します。

CVImageBufferRef を RGB 値の配列に変換できる場合は完璧です。それ以外の場合は、NSBitmapImageRep を RGB 値に変換する効率的なソリューションが必要です。

0 投票する
1 に答える
2596 参照

cocoa - geometryFlipped での CALayer の renderInContext: メソッドの使用

データをフラットファイルとして保存containerLayerする前に、に変換しようとしている CALayer ( ) があります。プロパティが YES に設定されており、これが問題を引き起こしているようです。最終的に生成される PNG ファイルは、コンテンツを正しくレンダリングしますが、反転したジオメトリを考慮していないようです。左に表示されているコンテンツを正確に表すために、明らかに test.png を探しています。NSBitmapImageRepcontainerLayergeometryFlipped

以下に添付されているのは、問題のスクリーンショットと私が使用しているコードです。

視覚的な例

参考までに、生成されたファイルを実際に保存するコードを次に示しますNSBitmapImageRep

0 投票する
2 に答える
2184 参照

objective-c - 24 bpp でアルファチャンネルなしの NSBitmapImageRep を作成することは可能ですか?

事前乗算されたアルファがよくわかりません。

アルファ チャネルのない NSBitmapImageRep が必要です (特定の bpp は必要ありません)。

私の問題は、このコードでエラーが発生することです。

エラー: CGBitmapContextCreate: サポートされていないパラメーターの組み合わせ: 8 整数ビット/コンポーネント; 24 ビット/ピクセル。3 成分色空間。kCGImageAlphaNone; 640 バイト/行。

この組み合わせがサポートされていないことはわかっていますが、このようなものが必要であり、解決策が見つかりません。

0 投票する
1 に答える
2302 参照

cocoa - NSBitmapImageRep からの「bytesPerRow」の計算方法

NSBitmapImageRep を構築するときに「bytesPerRow」がどのように計算されるかを理解したいと思います (私の場合は、フロートの配列をグレースケール ビットマップにマッピングすることから)。

この詳細を明らかにすると、浮動小数点数の配列からバイト配列 (0 ~ 255、符号なし char; これらの配列はどちらも以下のコードには示されていません) にメモリがどのようにマップされているかを理解するのに役立ちます。

Apple のドキュメントによると、この数値は「画像の幅、サンプルあたりのビット数、およびデータがメッシュ構成の場合はピクセルあたりのサンプル数」から計算されます。

この「計算」に従うのに苦労したので、経験的に結果を見つけるために単純なループをセットアップしました。次のコードは問題なく実行されます。

結果は次のようになります。

したがって、Nx が 320 まで 1 ずつ増分的に増加する場合でも、バイト/行が 64 バイトの増分でジャンプすることがわかります (これらの Nx 値のすべてを示したわけではありません)。この議論では、Nx = 320 (最大) は任意であることにも注意してください。

では、バイト配列のメモリの割り当てとマッピングの観点から、「行あたりのバイト数」はどのように第一原理から計算されるのでしょうか? 上記の結果は、単一のスキャンラインからのデータを「ワード」長の境界 (私の MacBook Pro では 64 ビット) に揃えることができるのでしょうか?

これがどのように機能するかを理解するのに苦労しています。

0 投票する
1 に答える
220 参照

cocoa - cocoa: NSBitmapImageRep の拡大バージョンを描画するにはどうすればよいですか?

コードで NSBitmapImageRep を使用して 64x64 ピクセルのスプライトを作成し、それを画面に描画して非常に大きくしたいと考えています。その結果、画面上に非常に大きな「ピクセル」が表示されます。古い学校のマリオ ブラザーズやマインクラフトを考えてみてください。これどうやってするの?

編集このオフスクリーンビットマップに描画し、後でCALayerでレンダリングしたい

0 投票する
2 に答える
5666 参照

cocoa - cocoa:NSImageのピクセルカラーを読み取る

私は持っていNSImageます。NSColorあるxとyのピクセルのを読みたいと思います。Xcodeにはメソッドがあるように見えますcolorAtX:y:NSImage、これにより、NSImageにそのようなメソッドがないというクラッシュが発生します。を作成して同じメソッドを呼び出す例を見てNSBitmapImageRepきましたが、NSImageをに正常に変換できませんでしたNSBitmapImageRep。上のピクセルはNSBitmapImageRep何らかの理由で異なります。

これを行う簡単な方法が必要です。これほど複雑にすることはできません。

0 投票する
1 に答える
303 参照

cocoa - 表示された IKImageBrowserView の NSBitmapImageRep を取得する方法は?

私は 2ペインのNSSplitViewを持っています。その 1 つのサブビューはIKImageBrowserViewです。NSSplitView をCATransitionでアニメーション化する前に、そのビットマップをキャプチャして所定の位置にスワップする必要があります。

usingはIKImageBrowserViewcacheDisplayInRectのコンテンツをキャプチャしませんが、他のペインのコンテンツをうまくキャプチャします。これは、独自のレイヤーツリーを持つIKImageBrowserViewに関係している可能性が高いと考えています。

誰かがこれが真実であることを確認できますか?

ビューの内容のビットマップ コピーを取得する方法について何か提案はありますか?

renderInContextIKImageBrowserViewは、そのpresentationLayerを参照するためのメソッドを明らかにしないため、私には役に立たないと思います。

ImageKitCALayers/CAOpenGLLayersalchemyの組み合わせだと思います。

ありがとう。

0 投票する
1 に答える
903 参照

cocoa - NSBitmapImageRepのサブピクセルアンチエイリアシング

NSBitMapImageRepサブピクセルアンチエイリアシングを使用してテキストを描画する方法はありますか?テキストは不透明な白い背景に描かれていて、このCGContextSetShouldSmoothFonts関数を使ってみましたが、役に立たないようです。

NSImageを使用して描画するとテキストスムージングを機能させることができます-[NSImage lockFocus]が、Retinaディスプレイで実行する場合は信頼できません。

0 投票する
1 に答える
635 参照

objective-c - PDFのすべてのページを画像として抽出:画像のサイズを設定します

以下のコードで出力画像のサイズを設定する際に問題が発生しました(別のStackOverflowの質問への回答として見つかりました)。

画像を小さなプレビューと高解像度画像として出力する必要があります。しかし、何があっても、それは596x842でしか出力しません。

setSizeメソッドを使用してサイズを変更しようとしましたが、画像のサイズが変更されるだけで、大きな空白スペースに小さな画像が残ります。正しくスケーリングできません。

誰かアイデアがありますか?

前もって感謝します。

注:これはMacOSXアプリケーションです。