【正誤情報】 『iPhoneデジカメプログラミング』
本書に以下の誤りがございました。
第4章
p.76~77にかけて掲載してあるLIST 4-6について、p.77の6行目以降の2行は不要でした。不要な行は次のものです。
—————————————
CGContextTranslateCTM(context, height, width);
CGContextScaleCTM( context,-1.0,1.0 );
—————————————
この結果、正しいLIST 4-6は次のようになります。
正:LIST 4-6
—————————————
// 画像を90度回転させたCGImageオブジェクトを作成するメソッド
+(CGImageRef)rotateImage:(CGImageRef)image mirrored:(BOOL)mirrored {
int width = CGImageGetWidth(image);
int height = CGImageGetHeight(image);
// CGBtimapCotnextオブジェクトを作成。90度回転させるので、結果的に幅と高さを入れ替える
CGContextRef context = [CGUtil newBlankBitmapContext:CGSizeMake(
height, width)];
if (mirrored) {
// 前面カメラの場合は、左右反転
CGContextTranslateCTM(context, height, width);
CGContextScaleCTM(context,-1.0,1.0);
} else {
CGContextTranslateCTM(context, 0, width);
}
CGContextRotateCTM(context, -M_PI/2);
// 画像を描画
CGContextDrawImage(context, CGRectMake(0, 0, width, height), image);
// CGBitmapContextからCGImageオブジェクトを作成
CGImageRef cgImage = CGBitmapContextCreateImage(context);
CGContextRelease(context);
return (CGImageRef)[(id)cgImage autorelease];
}
—————————————
サポートページからダウンロードできるサンプルには、この誤りはありませんでした。
以上、ご利用者の方にはご迷惑をおかけしました。お詫びして訂正いたします。
【追加情報】
iOS 4.3からarmv7用のビルド時にリンクするユニバーサルバイナリにもarmv7のバイナリが入っていないとエラーになるようです。今回は、OpenCVのバイナリがそれにあたります。ビルドの設定でarmv6だけをターゲットにすれば問題ありません。この修正を行ったサンプルをDMG形式で提供しますので、必要に応じてご利用ください。
(978-4-7973-6232-9-02-iPhone-degicame-programming-4iOS4_3.dmg)