問題タブ [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.
cocoa - なぜbitmapImageRepForCachingDisplayInRect:空の画像を作成するのですか?
ビューのビットマップをキャプチャすることになっている非常に単純なコードがあります。これは以前はLeopardで機能していましたが、SnowLeopardではひどく壊れているようです。
ウィンドウのボタンを押すと応答するコードは次のとおりです。
ボタンをクリックしてスナップショットを撮ると、完全に透明な画像になります。
私はここで完全に無知ですか、それともこのビットマップキャッシング方法は壊れていますか?
単純なプロジェクト(基本的には、このコードを呼び出すボタンを備えたスターターNSDocumentプロジェクト)は、ここにあります。
cocoa - Cocoaでjpeg画像を圧縮するには?
JPEG 画像があり、Cocoa/Core Image/Core Graphics を使用して段階的に圧縮できるようにしたいと考えています。たとえば、A.jpg (3MB) があり、A を圧縮して B.jpg (1MB) を取得し、B を圧縮して C.jpg (400KB) を取得し、画像が圧縮できなくなるまで繰り返します。
私は NSBitmapImageReppresentationUsingType:properties を使用しようとしていますが、あまり成功していません。圧縮された画像データから作成された画像表現を使用してさらに圧縮しようとしましたが、最初の圧縮データの作成に使用したのと同じ圧縮係数を使用すると、うまくいきません。
ここに私が苦労しているコードがあります
これが私の結果です
objective-c - NSImageView でクリックされた NSPoint を変換して、基になる NSBitmapImageRep のピクセル座標を修正する
これが私が達成しようとしていることです: 私は現在スキンサポートを追加しようとしているオープンソースの TI 電卓エミュレータに取り組んでいます。スキン イメージは、イメージがスキン イメージに設定された単なる NSImageView です。mouseDown: メソッドをオーバーライドし、convertPointFromBase: を使用して NSImageView 座標でマウスの位置を取得し、locationInWindow の戻り値を変換するポイントとして取得します。
次に、引数が nil の bestRepresentationForDevice: を使用して、NSImageView から基になる NSBitmapImageRep を取得します。最後に、NSBitmapImageRep で getPixel:atX:y を呼び出し、point.x と point.y を場所として指定します。
ただし、NSImageView の原点は (通常どおり) 左下から始まりますが、NSBitmapImageRep の座標は左上から始まります。これを補う明白な方法を見つけられないようです。そのため、ボタン クリックのヒット テストが適切に機能しません。どんな助けでも大歓迎です。
cocoa - NSBitmapImageRepから透明度のある8ビットPNGを作成するにはどうすればよいですか?
基本的に1ビット値のアルファチャネルを持つ32ビットNSBitmapImageRep
があります(ピクセルはオンまたはオフのいずれかです)。
このビットマップを透明度のある8ビットPNGファイルに保存したいと思います。-representationUsingType:properties:
のメソッドを使用してNSBitmapImageRep
渡すとNSPNGFileType
、32ビットのPNGが作成されますが、これは私が望むものではありません。
8ビットのPNGを読み取ることができ、プレビューで問題なく開くことは知っていますが、組み込みのMac OS X APIを使用してこのタイプのPNGファイルを書き込むことは可能ですか?必要に応じて、CoreImageまたはQuickTimeにドロップダウンできてうれしいです。ドキュメントをざっと調べても、CGImage
明らかなことは何もわかりませんでした。
編集:
私はこの質問に報奨金を始めました。誰かが32ビットを取り、NSBitmapImageRep
1ビットの透明度で256色のPNGを書き込む実用的なソースコードを提供できるなら、それはあなたのものです。
objective-c - NSBitmapImageRepをNSBMPFileTypeファイルとして保存します。間違ったBMPヘッダーとビットマップコンテンツ
NSBitmapImageRepをBMPファイル(Snow Leopard)に保存します。macosで開くと問題ないようです。しかし、それは私のマルチメディアデバイス(インターネットからの任意のBMPファイルを表示することができます)でエラーを起こします。何が悪いのか理解できませんが、ファイルの内部を見ると(macosのクールなhexfiendアプリで)、2つの間違いがあります:
- ヘッダーのbiHeightパラメーターの値が間違っています:4294966216(hex = C8FBFFFF)ヘッダーのbiWidthパラメーターが正しい:1920
- ビットマップコンテンツの最初のピクセル(BMP形式の54バイトヘッダーの後)は、元の画像の左上隅に対応します。元のBMPファイルでは、BMP形式で指定されているように、最初に左下隅のピクセルである必要があります。
アプリの完全なワークフローを説明するために、BMP画像をドラッグできるNSImageViewがあります。このビューはNSImageにバインドされています。ドラッグアンドドロップした後、この画像を(テキストを描画して)BMPファイルに保存するアクションがあります。
新しいBMPファイルを保存するためのコードは次のとおりです。
duneScreenViewdrawSynopsisContentWithDuneFolderメソッドは、CGContextDrawImageを使用して画像を描画します。duneScreenViewdrawSynopsisメソッドは、CoreTextを使用して同じコンテキストでテキストを描画します。
何が悪いのか知っていますか?
cocoa - NSImageのピクセルデータに入る
白黒画像で動作するアプリケーションを書いています。私は NSImage オブジェクトをメソッドに渡し、NSImage から NSBitmapImageRep を作成しています。すべて動作しますが、かなり遅いです。これが私のコードです:
だから私はCIImageを使用しようとしましたが、(x、y)座標で各ピクセルに入る方法がわかりません。それは本当に重要です。
objective-c - メモリ内の PNG を NSData として可逆圧縮しますか?
現在、有効な PNG データを含む NSData があります。
NSData* imageData = [bitmapRep representationUsingType:NSPNGFileType properties:nil];
このデータをファイル
[imageData writeToFile:@"test.png" atomically:YES];
に書き出しました。OptiPNG または PNGCrush で圧縮すると、有望な結果が得られます (25% 以上の圧縮)。
このタスクをメモリ内で実行し、カテゴリを NSData に追加して、次のようなものを有効にしたいと思います。
[imageData optimizePNGData]
ただし、ファイル システム コールは OptiPNG と PNGCrush の両方に深く組み込まれているため、どちらもライブラリとしてビルドするのに適していません (例: optipng.a)。
ほとんどの GUI ラッパーが行うように、exec 呼び出しに依存せずに同様のことを達成する方法について、誰かアイデアはありますか?
opengl - NSBitmapImageRep を使用してアルファ付きの OpenGL テクスチャを作成する
次を使用してPNGをロードしています:
そこから gl テクスチャを正常に作成し、透明度なしで正しくレンダリングできます。ただし、次を使用してブレンドを切り替えると:
テクスチャは正しい透明な背景でレンダリングされますが、イメージの色が正しくありません。
ブレンド機能でいくつかのオプションを試しましたGL_SRC_ALPHA
, GL_ONE_MINUS_SRC_ALPHA
, GL_ONE
, GL_DST_ALPHA
, など.
画像データのビットを並べ替える必要があるかもしれない、おそらくチャンネルが混同されているかもしれないと教えられましたが、その場合、ブレンドがオフになっていると正しくレンダリングされるとは思いません。
または、libPNG を使用することもできますが、NSBitmapImageRep
可能であれば使用してみたいと思います。
windows - NSBitmapImageRepで生成されたBMPはWindowsでは読み取ることができません
次の方法で作成しているNSBitmapImageRepがあります。
そして、このようにBMPとして保存されます:
ここで重要なのは、Mac OSXではBMPファイルを正しく読み取って操作できることですが、Windowsでは、次のスクリーンショットのように、ロードに失敗するだけです。
スクリーンショットhttp://dl.dropbox.com/u/1661304/Grab/74a6dadb770654213cdd9290f0131880.png
ファイルをMSペイントで開いて(はい、MSペイントで開くことができます)、再保存すると、ファイルは機能します。
ここに手をいただければ幸いです。:)
前もって感謝します。