Retina display 向けの画像生成に関する一考察
2012.03.22
Retina display は iPhone4 から存在しているのだが、neu iPad になって表示される画像の鮮明さがとても重要になり、色々と細かなところで見直しが必要になっている。neu.Notes に関しても、neu iPad 上で走らせると サムネイルの鮮明さが重要になる。
例えば、neu.Notes でユーザーが描いたベクターデータを保持した Canvas ラスタライズして UIImage を返す API。Retina display 登場前には、UIImage には一種類しかなかったので大きさを指定しさえすれば良かったが、これからはそれをデバイス上に表示するのか、JPEG などに変換してメールで送信したりするのか、によってデバイス向けのスケーリングをするかどうかを指定する必要がある。
具体的には、imageFromRect:size:clipPath: というメソッドにdevice:というフラグを追加して、アプリケーション側から指定できるようにしている。
-(UIImage*) imageFromRect:(CGRect)rcSrc device:(BOOL)device size:(CGSize)size clipPath:(UIBezierPath*)clipPath {
if (device) {
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
} else {
UIGraphicsBeginImageContext(size);
}
CGContextRef context = UIGraphicsGetCurrentContext();
...
neu.Notes の場合だとサムネイルを表示する場合には device=YES で呼び、メールに添付する場合には device=NO で呼ぶ。
Comments