2010年01月24日

snow leopardでlibgcov.a関係のエラーが出た場合の対処

snow leopardでlibgcov.aでエラーが出た場合の対処方のメモ。

エラーで、

"_vproc_transaction_end", referenced from:
"_vproc_transaction_begin", referenced from:

とか出た場合は、コンパイラを「LLVM GCC 4.2」に変更するとOKだったりします。
コンパイラの変更は、

「プロジェクトを選択(クリック)」→「ファイル」→「情報を見る」→「C/C++ コンパイラのバージョン」

で、『GCC 4.2→LLVM GCC4.2』に変更する。
project_info.png



ラベル:libgcov.a LLVM GCC
posted by purigen at 01:06| Comment(0) | TrackBack(0) | object-c | このブログの読者になる | 更新情報をチェックする

2010年01月04日

object-cで゙画像読み込み&バイナリアクセス

object-cで読み込んだ画像のバイナリーデータ(ヘッダー抜きの画像部分)にアクセスする方法。


NSString *path = @"test.png";

//load image data
NSData *dat = [NSData dataWithContentsOfFile:path];
//create bitmap data
NSBitmapImageRep *bitmap = [NSBitmapImageRep imageRepWithData:dat];

//get image info usage CGImageRef
CGImageRef imageRef = [bitmap CGImage];
UInt8 *buf = (UInt8*)CFDataGetBytePtr(CGDataProviderCopyData(CGImageGetDataProvider(imageRef)));
UInt8 bytePerPixel = CGImageGetBitsPerPixel(imageRef)/8;

//display debug info
NSLog(@"plane size:%d",[bitmap bytesPerPlane]);
NSLog(@"width:%d",CGImageGetWidth(imageRef));
NSLog(@"height:%d",CGImageGetHeight(imageRef));
NSLog(@"bytePerPixel:%d",bytePerPixel);

//display plane binary
for(int i=0;i<CGImageGetWidth(imageRef)*CGImageGetHeight(imageRef);i++)
{
for(int j=0;j<bytePerPixel;j++)
{
NSLog(@"%u",buf[i*bytePerPixel+j]);
}
}


やってる事は、NSDataでバイナリをそのまま読み込んで、NSBitmapImageRepにバイナリ渡してビットマップ形式にして貰い、そこからCGImageRef(画像情報構造体)を取得して、後はCGImageXXXX系の関数で情報取得してバイナリにアクセスです。 わざわざCGImageRefを使わなくても、NSBitmapImageRepで同じ事はできるのですが、ラッパーされてない方が落ち着くので。
posted by purigen at 18:00| Comment(0) | TrackBack(0) | object-c | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。