問題タブ [nsimagerep]

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 投票する
2 に答える
268 参照

objective-c - NSCachedImageRepを回避する方法

PDFからのNSImageを使用しています。最初にイメージを作成したとき、NSImageRepは1つだけで、それはNSPDFImageRepです。これはいい。私はそれで働くことができます。ページ数がわかり、指定したページに移動して描画するなどの操作ができます。

問題は、背を向けるとすぐに、複数のページがないように見えるNSCachedImageRepに変わることです。ここで、PDFImageRepを別の変数に保持すると、追跡されますが、画像に関連付けられなくなったため、画像を描画しても同じページに表示されます。

私は何が欠けていますか?

ありがとう。

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

objective-c - NSImageRep の混乱

PDFから取得したNSImageがあるため、NSPDFImageRepタイプの表現が1つあります。画像 setDataRetained:YES; を実行します。NSPDFImageRep のままであることを確認します。後でページを変更したいので、担当者を取得し、現在のページを設定します。これで問題ありません。

問題は、画像を描画すると1ページ目しか出てこないことです。

私の印象では、NSImage を描画すると、表現が選択され、その表現が描画されます。現在、画像にはレップが 1 つしかないため、それが描画されているレップであり、それが PDFrep です。では、画像を描画すると、正しいページが描画されないのはなぜですか?

ただし、表現自体を描画すると、正しいページが表示されます。

私は何が欠けていますか?

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

cocoa - NSImage のサイズを最大ファイルサイズにする最良の方法はありますか?

ここに私がこれまでに持っているものがあります:

このコードは、200x200 の PNG が 128K 未満であることを前提としています。これが私のサイズ制限です。200x200 で十分ですが、可能であれば最大サイズにしたいと思います。

ここに私の2つの問題があります:

  1. コードが機能しません。書き出されたファイルのサイズを確認すると、元のファイルと同じサイズです。
  2. エクスポートする前に出力ファイルのサイズを予測して、サイズを最大にしても 128K 未満の画像を取得する方法はありますか?

これが作業コードです。かなりずさんで、おそらくいくつかの最適化を使用することができますが、現時点では気にしないほど高速に実行されます。ほとんどの写真で 100 倍以上反復し、ミリ秒単位で終了します。また、このメソッドは のカテゴリで宣言されていますNSImage

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

cocoa - Cocoaでjpeg画像を圧縮するには?

JPEG 画像があり、Cocoa/Core Image/Core Graphics を使用して段階的に圧縮できるようにしたいと考えています。たとえば、A.jpg (3MB) があり、A を圧縮して B.jpg (1MB) を取得し、B を圧縮して C.jpg (400KB) を取得し、画像が圧縮できなくなるまで繰り返します。

私は NSBitmapImageReppresentationUsingType:properties を使用しようとしていますが、あまり成功していません。圧縮された画像データから作成された画像表現を使用してさらに圧縮しようとしましたが、最初の圧縮データの作成に使用したのと同じ圧縮係数を使用すると、うまくいきません。

ここに私が苦労しているコードがあります

これが私の結果です

0 投票する
3 に答える
4442 参照

objective-c - NSImage のサイズが間違っています

ここで本当に基本的なものが欠けていると思います。存在することがわかっている正当な URL/パスを使用してこれを行う場合:

次に、幅が-2080177216で高さが0であることがコンソールに報告されます。幅が実際には50で高さが50であることはわかっていますが、isValidを呼び出してみるとYESが返され、サイズも確認しようとしました最初の表現であり、同じめちゃくちゃな値を返しました。画像が正しく読み込まれないのはなぜですか?

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

cocoa - NSImage を使用してパレット RGBA PNG を作成して書き込む

Cocoa フレームワーク* を使用して、RGBA パレット (パレット エントリあたり 32 ビット) を使用するパレット PNG 画像 (ピクセルあたり 8 ビット)作成しようとしています。

[NSBitmapImageRep initWithBitmapDataPlanes:…]メソッドの組み合わせをいくつか試しました。に適したビットマップを作成しているようですbitsPerSample:2 bitsPerPixel:8

ただし、そのようなビットマップを書き込もうとすると、次のよう[NSBitmapImageRep representationUsingType:NSPNGFileType…]になります。

他のビット深度を試すと、1 ピクセルあたり 32 ビット (パレットなし) の画像が得られます。


*) を使用できることはわかっていますlibpngが、それは私が探している答えではありません。

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

objective-c - NSImageのカスタム画像表現を実装する方法

現在NSimageクラスでサポートされていない特定の画像形式を描画して処理するアプリケーションを開発しています。この特定の形式では、画像は1Dバイナリテーブルの形式であり、その前にデータ(数値の次元、画像サイズ、ピクセルあたりのビット数など)を説明するASCIIヘッダーが付いています。

ココ描画ガイドで、新しい画像表現を作成できることを読みました。私はCocaおよびObjectiv-Cプログラミングに不慣れであり、このトピックに関して、Coco描画ガイドの説明は非常に短く、あまり役に立ちません。新しい画像表現を作成する方法に関するいくつかのサンプルコードを使用して、より詳細な情報を取得することに興味があります。また、Cocoaアプリケーションが新しい画像表現を正しく解釈するために、initWithDataメソッドとDrawメソッドを上書きする方法を理解することに特に興味があります。

メソッドがより詳細に説明されているリンクを私と共有している人はいますか?

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

objective-c - CGImageへの32ビットビッグエンディアン浮動小数点データ

FITS 画像を読み取るアプリケーションを作成しようとしています。FITS は Flexible Image Transport format の略で、主に天体物理学に関連する科学データを保存するために使用され、CCD カメラで空の写真を撮るほとんどのアマチュア天文学者によって使用されることが望まれるフォーマットです。したがって、FITSファイルには画像が含まれていますが、テーブルやその他の種類のデータも含まれている場合があります。私は Objectiv-C と cocoa プログラミングは初めてなので (このプロジェクトを開始したのは 1 年前ですが、忙しいので 1 年間はほとんど触れませんでした!)、ファイルの画像コンテンツを NSImageRep に渡します。FITS 画像のバイナリ データは、8 ビット/ピクセル、16 ビット/ピクセル、32 ビット/ピクセルの符号なし整数、または 32 ビット/ピクセル、64 ビット/ピクセルの浮動小数点で、すべてビッグ エンディアンです。

グレースケール FITS 画像の画像表現を 16 ビット/ピックス、32 ビット/ピックスの符号なし整数で表現することができましたが、32 ビット/ピックスの浮動小数点を探しているときに非常に奇妙な動作が発生します (この問題は RGB 32 ビットの価値があります)。 /pix 浮動小数点)。これまでのところ、8 ビット/ピクセルの整数データと、16 ビット/ピクセルおよび 32 ビット/ピクセルの整数データに基づく RGB イメージについてはテストしていません。これは、Web 上でサンプル ファイルをまだ見つけていないためです。

次のように、ファイルに適合するグレースケール画像フォームを作成する私のコードは次のとおりです。

そして、ここに 32/bits/pix 浮動小数点データの結果のスナップショットがあります: NASA HST 画像!

画像は左にシフトしているようですが、さらに厄介なのは、同じフレームに同じ画像 (フレームの上部と下部) の 2 つの表現が表示されることです。

また、他のファイルの場合、動作はより奇妙です: Star Field 1、(他のリンクについては、コメントを参照してください。新しいユーザーとして、このテキストに2つ以上のリンクを含めることはできません。また、直接配置することもできません画像。)

3 つのスター フィールドの画像はすべて、同じ Fits ファイルの内容を表しています。フレームの下部で画像の正しい表現を取得します (星は彩度が高すぎますが、まだエンコードを行っていません)。しかし、上部では、同じファイルを開くたびに、異なる表現の画像が得られました。このファイルを開くたびに、同じバイトシーケンスをタックして画像表現を生成しないように見えます(少なくとも上部については)。

また、下に複製された画像がデータの半分と上に半分のデータが含まれているのか、それとも単なるデータのコピーなのかはわかりません。

データの内容をプリミティブ形式 (人間が読める数値) に変換すると、その数値は適切な位置にあるピクセル内の数値と互換性があります。これにより、問題はデータに起因するのではなく、CGImage がデータを解釈する方法に起因すると考えられます。つまり、CGImageCreate 関数に渡す引数のどこかが間違っています。

RGB フィット画像データの場合、最後に 18 枚の画像をフレームに取り込みます。R、G、B各画像6枚ずつ。すべてグレースケールです。RGB 画像の場合、私のコードは異なることに注意してください。

私は何を間違っていますか?

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

calayer - レイヤーでサポートされた NSView を NSDockTile contentView として使用する

のとして裏打ちNSViewされたレイヤーを使用する方法はcontentViewありNSDockTileますか? あらゆる種類のトリックを試しましたが、透明な領域しか得られません。CALayerまた、別のルートに進んで から画像を取得し、それを に使用しようとしまし[NSApp setApplicationIconImage:]たが、運もありません。ここでの問題は、オフスクリーン画像の画像表現を作成していると思います。