ポインタデータ iphoneアプリケーションで生成された画像を指している場合。 CGBitmapContextCreateを使用してこのデータのコピーを作成した場合、または「インプレース」のイメージを使用している場合は誰ですか?iphone:新しいメモリを割り当てずに画像を作成する
理想的には、データ*の情報を再利用し、このイメージの追加コピーを作成しないことが理想的です。
void* data = <my data>;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef imageContext = CGBitmapContextCreate(data, w, h, 8, w*8, colorSpace, kCGBitmapByteOrder32Big|kCGImageAlphaPremultipliedLast);
CGImageRef imageRef = CGBitmapContextCreateImage(imageContext);
UIImage* image =[[UIImage alloc] initWithCGImage:imageRef];
もっと一般的には、イメージを作成するこの方法は、私にとってはむしろ複雑です。誰がここで何が起こっているのか分かっていますか? UIImageを作成する簡単な方法はありますか?
おかげ
- [UIImage initWithData]はイメージデータをデコードし、そのプロセスでコピーを作成します。メモリを割り当てずにイメージを真に作成するには、iPhoneがコピーオンライトをサポートしているピクセル形式でデータをプリデコードし、CGBitmapContextCreateを使用する方法があります。 – rpetrich
実際に正しく動作させることができませんでした。フォーマットとサイズの情報をUIImageに渡しますか?確かに何かが欠けている。 –