3

PHPに送信するbase64でエンコードされたイメージビューがあり、それをエコーバックすると、イメージビューに戻そうとすると破損します。私のデコーダーは、ローカルでデコードすると正常に動作するため、機能します..したがって、phpに送信すると破損する必要があります. これは、ログ エラー メッセージです。

   Jan  8 14:21:33 Vessel.local Topic[11039] <Error>: ImageIO: JPEG Corrupt JPEG data:214          extraneous bytes before marker 0x68  Jan  8 14:21:33 Vessel.local Topic[11039] <Error>: ImageIO: JPEG Unsupported marker type 0x68

それが何を意味するのか、サーバーに送信した文字列が破損するのを防ぐ方法を教えてください。私は通常の iOS ポストデリゲートを使用していますが、エラーはありません。唯一のエラーは、それをイメージビューに変換したときです。

これは、画像を base64 にエンコードするコードです。

  NSData *imageData = UIImageJPEGRepresentation(crop, 1.0);
    NSString *baseString = [imageData base64EncodedString];
    int original =[baseString length];
    NSLog(@"orignal String=%@",baseString);
    [self register:username.text withPass:password.text withEmail:email.text withQuote:quote.text withPic:baseString];

これは、私のPHPサーバーに画像を送信するために使用するコードです:

NSString *urlString = [NSString stringWithFormat:@"http://localhost/Topic/Mobile/auth/registration.php"];
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0];
[request setHTTPMethod:@"POST"];
NSString *param = [NSString stringWithFormat:@"username=%@&password=%@&email=%@&quote=%@&pic=%@",user,password,email,quote,pic];
[request setHTTPBody:[param dataUsingEncoding:NSUTF8StringEncoding]];

NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES];

これは、base64 文字列を画像に戻すために使用するコードです。

   -(void)connectionDidFinishLoading:(NSURLConnection *)connection{

homeData = [NSJSONSerialization JSONObjectWithData:responseData options:nil error:nil];

NSString *decodeString = [[homeData objectAtIndex:0]objectForKey:@"profile_pic" ];
//int returnNUM = [decodeString length];
NSLog(@"RETURN STRING=%@",decodeString);
NSData *data = [NSData dataFromBase64String:decodeString];
profilepic = [[UIImageView alloc]initWithFrame:CGRectMake(5, 4, 120, 120)];
profilepic.image = [UIImage imageWithData:data];
UIGraphicsBeginImageContextWithOptions(profilepic.bounds.size, NO, 1.0);
[[UIBezierPath bezierPathWithRoundedRect:profilepic.bounds cornerRadius:80.0] addClip];
[profilepic.image drawInRect:profilepic.bounds];
profilepic.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self.view addSubview:profilepic];

}

エンコーダーとデコーダーは正常に動作します。ウェブに投稿すると、文字列がめちゃくちゃになります。PHPに送信するとすぐにエコーバックしようとしましたが、まだ破損していました..そのため、電話を離れるとコンテンツが変更されます。1 つの投稿で画像と NSSTRING PAREMETERS を一緒に投稿する方法の例をアップロードしてください。

4

0 に答える 0