iPhoneアプリ開発のお話です。
NSData に投入された画像の形式(JPEG/PNG/GIF)を識別する方法。
昔むかし、ある案件で、画像をWEB-APIで受け取る時に、何とサーバエラーがステータスコード「200」で返ってくるケースが発生しました。
サーバサイドには手を入れられない条件での開発だったので、
レスポンスの中身(Response Body)を見て、自力で判定するしかない!
…というケースは滅多にない(あっては困る)のですが、かけた労力が惜しいので共有します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
NSData *data; // ここに、画像データが入っているものとします。 const unsigned char *dataBuffer = [data bytes]; if ((unsigned long)dataBuffer[0] == 255 && (unsigned long)dataBuffer[1] == 216){ // JPEG } if ((unsigned long)dataBuffer[0] == 71 && (unsigned long)dataBuffer[1] == 73 && (unsigned long)dataBuffer[2] == 70){ // GIF } if ((unsigned long)dataBuffer[1] == 80 && (unsigned long)dataBuffer[2] == 78 && (unsigned long)dataBuffer[3] == 71){ // PNG } |