0

私のアプリケーションでは、ユーザーが写真ライブラリから写真をアップロードするか、写真を撮ることができます。その写真を撮影 (または選択) したら、その AssetURL を使用して次のことを行います。

- (void)uploadImageWithAssetURL:(NSURL *)url named:(id)name withParameters:(NSDictionary *)parameters atPath:(NSString *)path
{
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    [library assetForURL:url resultBlock:^(ALAsset *asset )
    {
        ALAssetRepresentation *rep = [asset defaultRepresentation];
        Byte *buffer = (Byte*)malloc(rep.size);
        NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
        NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];

        NSString *extension = @".jpg";
        NSString *mimeType = @"image/jpeg";
        NSNumber *identifier = [parameters objectForKey:FileManagerOwnerObjectIDKey];
        NSString *filename = [NSString stringWithFormat:@"%@_%@%@", name, [_dateFormatter stringFromDate:[NSDate date]], extension];
        NSMutableURLRequest *request = [_httpClient multipartFormRequestWithMethod:@"POST" path:path parameters:parameters constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
            [formData appendPartWithFileData:data name:@"file" fileName:filename mimeType:mimeType];
        }];

        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

        [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
         {
             [_delegate fileManagerDidSuccessfullyUploadPicture:[NSDictionary dictionaryWithObjectsAndKeys:identifier, FileManagerOwnerObjectIDKey, name, FileManagerOwnerObjectTypeKey, section, FileManagerOwnerObjectSectionKey, nil]];

         } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
             [_delegate fileManagerDidNotSuccessfullyUploadPicture:[NSDictionary dictionaryWithObjectsAndKeys:identifier, FileManagerOwnerObjectIDKey, name, FileManagerOwnerObjectTypeKey, section, FileManagerOwnerObjectSectionKey, nil]];
         }];
        [operation start];
    }
    failureBlock:^(NSError *error )
    {
         NSLog(@"Error loading asset");
    }];
}

どういうわけか、写真が横向きの場合、後で問題なく表示されます。ただし、その画像の適切な向きが縦向きの場合、Django サーバーに横向きとして送信され、サイズ変更などの際にサーバーが横向きとして処理するように見えます。したがって、私のポートレート写真はすべて上下逆になっています...

何か案は?!

4

1 に答える 1

2

Twitterでこれに答えたことは知っていますが、問題を抱えている他の人の利益のために:

多くの写真 (iPhone で撮影したものを含む) には回転 EXIF データが埋め込まれており、これを尊重するアプリケーションと無視するアプリケーションがあります。

デフォルトでは、ImageKit は EXIF データに対して特別なことは何もしません。ただし、Transpose プロセッサを使用すると、EXIF メタデータが読み取られ、指定された回転が適用されます。

詳細については、こちらをご覧ください

于 2013-11-27T04:10:16.303 に答える