問題タブ [cgbitmapcontextcreate]
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.
ios - CGBitmapContextCreateはNULLを返します
どのような状況でCGBitmapContextは割り当てに失敗しますか?テーブルビューがあり、複数のビューオプションがあります。ユーザーは、プレビューだけの小さなテーブルセル、1行に1つの大きなプレビュー、または1行に2つのプレビューを並べて表示できます。最初の2つは問題なくレンダリングされますが、3つ目は失敗します。CGBitmapContextCreateからのエラーメッセージはありません。使用しようとした後のエラー(つまり、無効なコンテキスト0x0)だけです。
私はiOS5.0をターゲットにしており、5.1でビルドしています。動作しているバージョンと動作していないバージョンの唯一の違いは、動作していないバージョンが2回実行しようとすることです(サイズが小さく、100x100未満)。 右側だけがこの問題を抱えています(つまり、2回目の試行)。最初の試みはまだ機能します。
ios - IphoneピクセルRGBA値編集
私の目標は次のとおりです。
プレーヤーが画面に触れると、プログラムはそのタッチ位置のピクセルの値を見つけて、すべてのピクセルをループし、まったく同じRGBA値のものが編集されます。現時点では、それらをすべて非表示にするには、アルファを0にします。
これまでのところ、タッチしたピクセルに対応するものを見つけるために情報を削除することができましたが、ピクセルを設定し、新しいデータからUIImageを作成して設定すると、何も変わりません。
少しの助けをいただければ幸いです。
コードは次のとおりです
機能のために
(UIImage *)getRGBAsFromImage:(UIImage *)image atX:(int)xx andY:(int)yy
そしてそれはそのように呼ばれます
ios - CGImageCreateは、画像を完全に黒くするか、画像を表示しないか、クラッシュします
私はしばらくの間、次のことを試みてきました、
- プレーヤーが画面をタップします
- プレーヤーがタップしたピクセルの値を取得します
- 画像をループして、同じピクセルを見つけます。すべて作成
- 同じ値のピクセルのアルファ値が0の場合、新しい画像を作成し、
- UIImageを新しく作成したものとして設定します
- ..。
- 利益
しかし、タイトルが示すように、完全に黒い画面であるか、画像がまったくないかのいずれかです...おそらくすべてのアルファを0に設定するか、この関数の近くのスタックでの不正アクセスに関する何かをクラッシュさせますCGSConvertBGRX8888toRGBA8888
これが機能です
{{
}
いくつかのテストで正しいピクセルを取得し、選択した色をビューに出力して、その部分が正常に機能しているように見えることはかなり確信しています。生データを編集した後に画像を作成しているときのようです。少なくとも、ここで問題はあると思います。
よろしくお願いします。
編集:
これでコードを削除したので、基本的にpngを生データにコピーしてUIImageを作成し、設定します。基本的に、まったく同じ画像を取得し、何も変更しないでください。しかし、今回は、すべての値が0であるか、アルファが0であるために消えてしまいます。編集されたコードが、次のようになっているのかわかりません。
iphone - 「CGBitmapContextCreate:無効なデータバイト/行」...カメラ+フィルタリングが画像のトリミングルーチンを台無しにするのはなぜですか?
元の画像:
フィルタリングされた画像:
UIImages(携帯電話のカメラロールの写真)を正方形に切り抜こうとしています。これが私が使用しているコードの一部です。ここで、「image」はトリミングされている画像です。
元の画像を使用している場合、この時点では次のようになります。
これは問題なく、私が期待していることです。これを整理する回転アルゴリズムがここには示されていません。
フィルタリングされた画像を使用している場合は、次のようになります。
...正方形ではなく、奇妙なことにズームインしました。 したがって、これが問題の原因であるように思われます。これらのフィルタリングされた画像の動作が異なる理由はわかりません。
私の問題は、その最後の行であるCGBitmapContextCreateで、次のエラーが発生することがあることです。
奇妙なことに、通常、これは発生しません-これまでのところ、元の画像の高さが幅よりも大きく、Camera+と呼ばれる別のアプリによってフィルタリングされた場合にのみこのエラーが発生しました...以前とまったく同じ写真フィルタリングは問題なく、フィルタリングされた風景写真も問題ないようです。
誰かが私をここに案内したり、実際に何が起こっているのかを説明するのを手伝ってもらえますか?エラーメッセージから、CGImageGetBytesPerRow(imageRef)を7744より大きい任意の数値に置き換えると、エラーは発生しなくなることを十分に理解していますが、このCGImageについては、実際にどのような影響があるのかを十分に理解していません。何でも、そしてそれは実際の解決策の多くのように私には思えません。このコードは、私がWebで見た他のトリミングの例に基づいているため、これらのビットマップ関数についての私の理解は限られています。
どんな考えでも大歓迎です!
編集
私はSOでこの質問を見つけました:このCGBitmapContextCreateで、bytesPerRow0はなぜですか?そして、bytesPerRowパラメーターを0に設定するように促されました。これによりエラーは解消されますが、このエラーが以前に発生したときと同じ状況では、トリミングルーチンが正しく機能しません。これには特別な人が答える必要があるかもしれませんが、ポートレート指向のカメラ+フィルタリングされた写真がこのコードによってどういうわけか異なって扱われる理由を推測するのに十分な画像フィルタリングについて知っている人はいますか?質問が少し変わったのでタイトルを更新しました。
EDIT2
上記のコードにサンプル画像を追加しました。最終的に、必要な回転を行った後、最終的にトリミングされた画像は次のようになります。
元の画像で:-完璧です!
フィルタリングされた画像で:-ひどい!
これらの最終的な、おそらくトリミングされた画像を作成するために使用されるコードは次のとおりです。
cgbitmapcontextcreate - CGBitmapContextCreate サポートされていないパラメーターの組み合わせエラー
以下のコードに示すように、画像ファイルを読み取り、変更を加えずに再表示していますが、次のエラーが発生します。
: CGBitmapContextCreate: サポートされていないパラメーターの組み合わせ: 8 整数ビット/コンポーネント; 16 ビット/ピクセル。1 成分色空間。kCGImageAlphaPremultipliedLast; 3792 バイト/行。
コードは次のとおりです。
最近 Xcode 4.4 にアップグレードするまで、このコードは問題なく動作していました。
iPhone CGContextRef CGBitmapContextCreate のサポートされていないパラメーターの組み合わせの提案に従って、「CGImageGetColorSpace(sourceImage)」を「CGColorSpaceCreateDeviceRGB()」に置き換えましたが、次のエラーが発生しました。
: CGBitmapContextCreate: 無効なデータ バイト/行: 8 整数ビット/コンポーネント、3 コンポーネント、kCGImageAlphaPremultipliedLast の場合、少なくとも 15168 である必要があります。
次に、「CGImageGetBytesPerRow(sourceImage)」を「CGImageGetBytesPerRow(sourceImage)*4」に置き換えたところ、エラーはなくなりましたが、4X 縮小画像のコピーが横に並べて表示されました。
誰もこの問題に遭遇しましたか? Xcode 4.4 のアップグレードに関連していますか?
ありがとう!シャイ
iphone - 画像をフル ビューに設定するにはどうすればよいですか?
以下のコードを使用して、rgba forful ビューを埋めています。しかし、私は半分(1/2)の幅しか得ていません。誰でも私のコードに問題があることを教えてください。
objective-c - CGBitmapContextGetData-返されたメモリブロックにデータをコピーできません
とを使用しRGBA
て画面にデータを描画しています。すでに'を作成してそこにデータを配置した場所で(、...)を使用して作成しようとすると、これは問題なく機能します。CGBitmapContextCreate
CGContextDrawImage
bitmapcontext
CGBitmapContextCreate
pixelBuffer
malloc
pixelBuffer
ただし、Core Graphicsで独自のメモリを管理したいので、に渡しNULL
てからCGBitmapContextCreate
、を呼び出して使用するメモリブロックへのポインタを取得し、を使用してバッファを前述のブロックにCGBitmapContextGetData
コピーします。しかし、私は失敗します。以下の私のコードをご覧ください。私が間違っていることについて何か考えはありますか?RGBA
memcpy
memcpy
ios - クラッシュCGDataProviderCreateWithCopyOfData:vm_copyが失敗しました:ステータス1
次のエラーでクラッシュに直面しています:
「CGDataProviderCreateWithCopyOfData:vm_copy failed:status1.」
複数の質問がありますので、お役に立てれば幸いです。
vm_copyのステータス1は何を表しますか?
このクラッシュは、データコピーの内部forループにブレークポイントを設定した場合にのみ発生します。次に、ブレークポイントを再開して削除します。ブレークポイントがない場合、関数は実行されますが、空白の画像が表示されます。ブレークポイントを設定しなくても、そのようなクラッシュがキャッチされ、アプリケーションが実行を停止するようにするにはどうすればよいですか?
このエラーは、CGBitmapContextCreateImageを実行したときに発生します。誰かがこれを解決する方法を知っていますか?
iphone - CGImageをビットマップコンテキストに描画し、UIBezierPathを事前にコンテキストに描画します
これが私の最初の質問ですので、ご容赦ください。
基本的に簡単な描画アプリを作成しようとしていますが、以前はCore Graphicsを使用していましたが、問題は遅すぎたため、指で描画すると遅れてしまいました。
ですから、私はUIBezierパスを使用して描画しようとしています。これは、はるかに高速であることがわかったためです。
Core Graphicsを使用していたとき、描画速度を維持するために、作成したカスタムビットマップコンテキストに描画していました。このコンテキストは、描画中に常に更新されていました。
そこで、カスタムビットマップコンテキストに描画し、次にCGImageRefを-を使用してそのコンテキストで描画されたものに設定しました。
そして、それは-を使用してビットマップコンテキストに引き戻されました
また、これを行ったので、描画する線の色を変更しても、それが理にかなっている場合は、残りの描画は以前に描画したままになりました。
今私が遭遇した問題はこれです。
-を使用して、画像コンテキストへのUIBezierパスを描画しようとしています。
パスは私のUIBezierPathです。すべてのパスの設定は、タッチが開始され、タッチが移動してから[selfsetNeedsDisplay]を呼び出すことで行われます。drawRectを呼び出します。
何が起こっているのかというと、CGImageRefをコンテキストに適切に描画していないか、描画しているのですが、キャッシュイメージをキャプチャすると、パスだけでなく、どこかから白い背景がキャプチャされ、全体に貼り付けられます。最後のパスが白い背景の塗りつぶしと一緒に描画された画像。ビューの背景色がclearColorであっても、画像を構築するために描画された最後のパスを確認することはできません。
私は本当に理にかなっていることを願っています、私はこれにあまりにも多くの時間を費やしました、そしてそれは私を完全に使い果たしました。これが私が使っている描画方法です-
これは、画像コンテキストを作成します-
そして、ここに私の絵があります-
'path'は私のUIBezierPathです'cacheImage'はCGImageRefです'imageContext'はCGContextRefです
どんな助けでも大歓迎です!そして、あなたがそれを行うためのより良い方法を考えることができるならば、私に知らせてください!ただし、キャッシュイメージの背景を透明にする必要があるため、後でこれを機能させるときに何かを適用するため、パスだけが表示されます。
編集また、描画速度を上げるために毎回ポイントを削除しています。
前もって感謝します :)
objective-c - CGBitmapContextCreate bitsPerComponent for RBG565
CGContextRef
を使用して作成しようとしていますCGBitmapContextCreate
。作成したいビットマップは RBG565 (赤と青は 5 ビット、緑は 6 ビット) です。のパラメータの 1 つがCGBitmapContextCreate
ですbitsPerComponent
。variable があるのでbitsPerComponent
、それを 5 に設定しただけなのか、それとももっと良い方法があるのか わかりません。
ありがとう。