gpt4 book ai didi

php - 将 responseObject base64 编码字符串转换为 UIImage

转载 作者:行者123 更新时间:2023-11-29 12:09:02 29 4
gpt4 key购买 nike

我正在尝试使用 PHP(在服务器端)将图像发送到我的 iOS 应用程序,以便我可以在 UIImageView 中显示它。

我的服务器端代码是:

<?php

header("Content-Type: image/jpeg"); //if your data is format jpeg

$username = $_POST['username'];
$count = $_POST['count'];
$base64string = base64_encode(file_get_contents("images/".$username."/".$count."/".$username."file".$count.".jpeg"));
echo $base64string;

?>

我在我的 iOS 应用程序中收到带有此代码的图像:

NSString * uploadURL = @"http://192.168.1.4/getimage.php";

NSLog(@"uploadImageURL: %@", uploadURL);

NSString *queryStringss = [NSString stringWithFormat:@"%@", uploadURL];
queryStringss = [queryStringss stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer=[AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/plain"];
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"image/jpeg"];

NSUserDefaults *userdefaults = [NSUserDefaults standardUserDefaults];

NSString *usernameEncoded = [marker.title stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSDictionary *params = @{@"username": usernameEncoded, @"count": [object valueForKey:@"count"]};

[manager POST:queryStringss parameters:params success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject);
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:responseObject options:0];
image.image = [UIImage imageWithData:decodedData scale:300/2448];
[self.view addSubview:image];
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@ ***** %@", operation.responseString, error);
}];

当我运行代码时 - 它遇到了一个错误 block ,错误显示为我发送的 base64 编码“字符串”(图像):

2015-12-03 01:19:15.655 sneek[6261:1952572] Error: /9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAYAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAMwKADAAQAAAABAAAJkAAAAAD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/8AAEQgJkAzAAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tr

... (very long) ...

Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}

我做错了什么?

最佳答案

您已指定 AFJSONResponseSerializer,即使它不是 JSON。当然,您已经覆盖了 acceptableContentTypes,但这并不能阻止它尝试解析响应中的 JSON。

我会使用 AFHTTPResponseSerializer,然后丢失 acceptableContentTypes

顺便说一句,我不会将 image/jpeg 用于 base64 编码的响应,因为它是文本,而不是 jpeg。如果您要返回原始 base64 字符串,您可以使用 application/text 或类似的东西。

或者,更好的是,将您的 PHP 更改为实际返回 JSON(因为这样可以更轻松地解析响应)并继续使用 AFJSONResponseSerializer(但丢失一次 acceptableContentTypes您修复 header ),然后您可以从 response[@"image"] 中获取 base64 字符串。

<?php

header("Content-Type: application/json");

$username = $_POST['username'];
$count = $_POST['count'];
$base64string = base64_encode(file_get_contents("images/".$username."/".$count."/".$username."file".$count.".jpeg"));
echo json_encode(array("image" => $base64string));

?>

或者,使用 AFImageResponseSerializer 并更改 PHP 以返回图像:

<?php

header("Content-Type: image/jpeg"); //if your data is format jpeg

$username = $_POST['username'];
$count = $_POST['count'];
$contents = file_get_contents("images/".$username."/".$count."/".$username."file".$count.".jpeg"));
echo $contents;

?>

关于php - 将 responseObject base64 编码字符串转换为 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34059225/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com