0

ユーザーが取得した画像のサイズを変更してサービスにアップロードするオプションをユーザーに提供するアプリケーションを作成しています。サイズ変更は正常に機能しているようですが、再作成された画像が適切な場所に保存されていません。これは、アプリケーションが写真が読み込まれていると認識していないように見えるためです。

if ステートメントの最初の関数 (「normal_size」に関して) は正常に動作することに注意してください。追加のサイズ パラメータでこれら 2 行を再作成しようとしましたが、なぜそれが格納されていないのかわかりません。これは私を夢中にさせています。コードは次のとおりです。

// Set image dictionaries
iInfoDict = [[NSDictionary alloc] initWithDictionary:info];
NSLog(@"infor ===== %@", info);
UIImage* image =[info objectForKey:@"UIImagePickerControllerOriginalImage"];
NSLog(@"iImage name === %@", iImage);

// Determines path of image taken / chosen
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"image.jpg"];

CGSize size;

// Not sure what this does other than dismissing the pickerViewController

NSData* data = UIImageJPEGRepresentation(image, 0.9);
[data writeToFile:appFile options:nil error:nil];
NSLog(@"Documents ==== %@", documentsDirectory);
[picker dismissModalViewControllerAnimated:YES];
//    photo.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 

// IMAGE RESIZE CODE

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"normal_image"])    
{
    [photoData setObject:[iInfoDict objectForKey:@"UIImagePickerControllerOriginalImage"] forKey:@"image"];
     photo.image = [iInfoDict objectForKey:@"UIImagePickerControllerOriginalImage"];
}
else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"small_image"])
{
    CGSize size = CGSizeMake (600, 450);
    UIImage *origImage = [iInfoDict objectForKey:@"UIImagePickerControllerOriginalImage"];
    UIImage *destImage = [origImage resizedImage:size interpolationQuality:kCGInterpolationHigh];

    NSLog(@"Image Size: %@", NSStringFromCGSize(destImage.size));
    [photoData setObject:destImage forKey:@"image"];

    photo.image = destImage;
}
4

1 に答える 1

0

私があなたの質問を理解していないか、あなたが何をしているのか理解していません。コメントに基づいて、後者を疑っています。コメント// Not sure what this does other than dismissing the pickerViewControllerの直後に、サイズ変更されていない画像をドキュメント ディレクトリに書き込む 2 行が続きます。

書き出す前に画像のサイズを変更したい場合があるので、サイズを変更した後、書き込みを最後に移動することをお勧めします。

次の 2 行を削除します。

NSData* data = UIImageJPEGRepresentation(image, 0.9);
[data writeToFile:appFile options:nil error:nil];

そして最後に、次の 2 行を挿入します (保証はありません。メモリから書き込まれます)。

NSData* data = UIImageJPEGRepresentation(photo.image, 0.9);
[data writeToFile:appFile options:nil error:nil];
于 2012-06-27T09:24:55.290 に答える