iOSプログラミングを勉強しています。
私は画像を処理する必要があります。
BMPファイルに画像を作成する必要があります。ただし、iOS は BMP ファイルの作成をサポートしていません。
だから多分私はBMPファイルを作ることができるポインタを使うと思います。
BMP のヘッダーを作成します。そしてそれをNSData
オブジェクトに入れます。
今、私はそれに画像データの保存を残しましたNSData
.(私はbmpDataと言います)
ここから私の疑問が始まります。
サイズが128 x 64の画像が必要です。
コンテキストから取得しUIImage
ます。(私は画像1と言います)
CGSize
128 x 64の a を作成します。
そのサイズを使用してcontext2を作成し、image1を描画します
今UIImage
、サイズが 128 x 64 の context2 から、サイズ変更された image1 を取得します。
image2を作成しUIImageView
て使用すると、正常に動作します。良い。image2 よくできています。
だから私はunsigned char *であるポインタを宣言しました。
unsigned char *bmpDataPointer = (unsigned char *)image2;
そして、私は for ループを使用します
for(int i = 0; i < 64; ++i)
{
for(int j = 0 ; j < 128; ++j)
{
// dataObj and bmpData are different NSData object
// dataObj just contain bitmap data to check my pointer works fine or not.
[dataObj appendBytes:&(bitmapDataPointer[i*1 + j]) length:sizeof(char)];
}
}
そしてUIImage
、データが有効であることを確認するために作成しますが、失敗します。
UIImage *createdImageUsedByaPointer = [UIImage imageWithData:dataObj];
if(createdImageUsedByaPointer == nil)
{
NSLog(@"nil!");
}
よし、走れ。文字列 nil が表示されます。
何故ですか?コンテキスト サイズを 128 x 64 にするので、128 x 64 回ループします。
しかし、それはうまくいきません。
どうすれば修正できますか??
ポインターを使用するためにどのように処理できUIImage
ますか??
誰かが私を助けてください。