为啥图像路径中的图像不显示在 UIImageView 中?
Posted
技术标签:
【中文标题】为啥图像路径中的图像不显示在 UIImageView 中?【英文标题】:Why image from image path is not displayed in UIImageView?为什么图像路径中的图像不显示在 UIImageView 中? 【发布时间】:2016-12-27 05:58:46 【问题描述】:我正在使用AFNetworking 3.0
。
我想在UIImageView
中显示图像。
为此,
1.我向服务器发送参数如下:
.
.
.
[manager POST:Loginurl parameters:params progress:nil success:^(NSURLSessionTask *task, id responseObject)
2. 我收到了来自服务器的响应,例如:
NSLog(@"Response from image server : %@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]);
当我打印日志时:
Response from image server : http://Here_is_server_URL.jsp?uN=Rohit&wI=290119935030&pP=null&print=no7
3.我将按以下方式显示该图像:
_imgstr= [NSString stringWithFormat:@"%@",[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]];
NSLog(@"%@",_imgstr);
NSString *imgURL = [NSString stringWithFormat:@"%@",_imgstr];
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:imgURL]];
[_image setImage:[UIImage imageWithData:data]];
4.当我显示NSLog(@"imagedata:%@",data);
时,我得到了以下输出
imagedata:<0d0a0d0a 0d0a0d0a 3c21444f 43545950 45206874 6d6c2050 55424c49 4320222d 2f2f5733 432f2f44 54442048 544d4c20 342e3031 20547261 6e736974 696f6e61 6c2f2f45 4e222022 68747470 3a2f2f77 77772e77 332e6f72 672f5452 2f68746d 6c342f6c 6f6f7365 2e647464 223e0d0a 3c68746d 6c3e0d0a 3c686561 643e0d0a 0d0a3c74 69746c65 3e323478 3757656c 6c6e6573 73202d20 57656c6c 6e657373 20436172 643c2f74 69746c65 3e0d0a3c 73637269 70743e0d 0a096675 6e637469 6f6e2070 72696e74 416e644f 75742829 207b0d0a 0909646f 63756d65 6e742e67 6574456c 656d656e 74427949 6428226d 79446976 22292e73 74796c65 2e626f72 64657220 3d202273 6f6c6964 20626c61 636b223b 0d0a2f2f 20090964 6f63756d 656e742e 67657445 6c656d65 6e744279 49642822 6d794469 7622292e 7374796c 652e7769 64746820 3d202235 32307078 223b0d0a 2f2f2009 09646f63 756d656e 742e6765 74456c65 6d656e74 42794964 28226d79 44697622 292e7374 796c652e 68656967 6874203d 20223330 30707822 3b0d0a09 09646f63 756d656e 742e6765 74456c65 6d656e74 42794964 28226d79 44697622 292e7374 796c652e 6267636f 6c6f7220 3d202223 30304646 3030223b 0d0a0909 77696e64 6f772e70 72696e74 28293b0d 0a09092f 2f77696e 646f772e 6c6f6361 74696f6e 2e687265 66203d20 22566965 7750726f 66696c65 73223b0d 0a097d0d 0a3c2f73 63726970 743e0d0a 3c737479 6c653e0d 0a2e6267 696d6720 7b0d0a09 6261636b 67726f75 6e642d69 6d616765 3a207572 6c282769 6d672f77 656c6c6e 65736361 72646267 696d6167 65322e6a 70672720 293b0d0a 09626163 6b67726f 756e642d 636f6c6f 723a2072 67626128 3235352c 20323535 2c203235 352c2030 2e353729 3b0d0a09 6261636b 67726f75 6e642d62 6c656e64 2d6d6f64 653a206c 69676874 656e3b0d 0a7d0d0a 3c2f7374 796c653e 0d0a0d0a 3c2f6865 61643e0d 0a0d0a3c 626f6479 3e0d0a0d 0a0d0a09 0d0a093c 62723e0d 0a093c62 723e0d0a 093c6365 6e746572 3e0d0a09 093c6272 3e203c62 723e0d0a 09093c64 69762069 643d226d 79446976 2220636c 6173733d 22626769 6d672220 7374796c 65203d20 22776964 74683a35 32307078 3b206865 69676874 3a333030 70783b62 6f726465 723a2073 6f6c6964 20626c61 636b223e 0d0a0d0a 0909093c 68313e32 34783757 656c6c6e 6573733c 2f68313e 0d0a0d0a 0909093c 7461626c 653e0d0a 09090909 3c74723e 0d0a0909 0909093c 74643e3c 696d6167 6520626f 72646572 3d223170 78222073 72633d22 696d672f 77656c6c 6e657373 5f6c6f67 6f2e6a70 67222068 65696768 743d2231 32307078 22207769 6474683d 22313130 7078223e 3c2f696d 6167653e 266e6273 703b266e 6273703b 266e6273 703b266e 6273703b 266e6273 703b266e 6273703b 266e6273 703b3c2f 74643e0d 0a090909 09093c74 643e0d0a 09090909 09093c63 656e7465 723e3c66 6f6e7420 73697a65 3d223670 78223e3c 623e7573 6b3c2f62 3e3c2f66 6f6e743e 3c2f6272 3e3c666f 6e742073 697a653d 22327078 223e3c62 3e205745 4c4c4e45 53532049 44203c2f 666f6e74 3e3c6272 3e203c66 6f6e740d 0a090909 09090973 697a653d 22367078 223e3236 30333139 37383332 37323c62 723e3c2f 666f6e74 3e3c2f63 656e7465 723e3c2f 74643e0d 0a090909 09093c74 643e266e 6273703b 266e6273 703b266e 6273703b 266e6273 703b266e 6273703b 266e6273 703b266e 6273703b 266e6273 703b266e 6273703b 266e6273 703b266e 6273703b 266e6273 703b266e 6273703b 0d0a0d0a 09090909 09093c69 6d616765 20626f72 6465723d 22317078 22207372 633d2269 6d672f67 6f62732e 6a706722 20686569 6768743d 22313230 70782220 77696474 683d2231 31307078 223e3c2f 696d6167 653e0d0a 09090909 093c2f74 643e0d0a 09090909 3c2f7472 3e0d0a09 09093c2f 7461626c 653e0d0a 0909093c 62723e0d 0a090909 3c62723e 0d0a0909 09566973 69742075 73204020 7777772e 32347837 77656c6c 6e657373 2e636f6d 20266e62 73703b26 6e627370 3b6f7226 6e627370 3b266e62 73703b20 63616c6c 20757320 40202b39 31203739 37323839 32363039 200d0a09 093c2f64 69763e0d 0a093c2f 63656e74 65723e3c 62723e3c 62723e0d 0a093c63 656e7465 723e0d0a 090d0a09 093c6120 68726566 203d2022 77656c6c 6e657373 63617264 2e6a7370 3f707269 6e743d79 65732677 493d3236 30333139 37383332 37322675 4e3d7573 6b222073 74796c65 203d2022 74657874 2d646563 6f726174 696f6e3a 6e6f6e65 3b223e0d 0a09093c 62757474 6f6e2074 79706520 3d202262 7574746f 6e223e50 72696e74 3c2f6275 74746f6e 3e0d0a09 093c2f61 3e0d0a09 09266e62 73703b26 6e627370 3b266e62 73703b26 6e627370 3b266e62 73703b0d 0a09093c 62757474 6f6e206f 6e636c69 636b203d 20227769 6e646f77 2e636c6f 73652829 3b223e43 6c6f7365 3c2f6275 74746f6e 3e0d0a09 0d0a093c 2f63656e 7465723e 0d0a3c2f 626f6479 3e0d0a3c 2f68746d 6c3e>
我的问题是:
当我运行代码时没有错误,但图像未显示在UIImageView
中。
我不想使用像SDWebImage
这样的第三方解决方案。
我可以为这个问题做些什么?
帮助将是显着的。
【问题讨论】:
尝试使用dispatch_async(dispatch_get_main_queue(), ^
块在主线程上设置图像。
谢谢先生,但请您详细说明您的回答先生...@NiravD
现在可以获取图片了吗?
尝试在浏览器中检查 URL 并检查您是否获得图像。
检查我所说的在主线程上设置图像的 dipankar 答案。
【参考方案1】:
尝试像这样在主线程上设置图像:
dispatch_async(dispatch_get_global_queue(0,0), ^
NSData * data = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: _imgstr]];
if ( data == nil )
return;
dispatch_async(dispatch_get_main_queue(), ^
_image = [UIImage imageWithData: data];
);
);
【讨论】:
@Suraj Sukale 你得到图片了吗? 检查您的 imageView 与情节提要的连接。 是的,我检查过了,@property (weak, nonatomic) IBOutlet UIImageView *image;在 .h 文件中并连接到故事板中的 UIImageView 尝试在您的图像视图上设置静态图像。 解决了我的问题,服务器端出了点问题...感谢您的支持。【参考方案2】:-Nirav D 所说的是正确的... 因此,我在这里详细解释了该答案以供您澄清,并相信您可以解决它
dispatch_async(dispatch_get_main_queue(), ^
[_image setImage:[UIImage imageWithData:data]];
;
UI 相关任务只能在主线程上执行。所以你可以使用主线程设置图像视图图像。
希望你尽快解决。
【讨论】:
你使用 GET 或 POST 方法吗? @Suraj 解决了我的问题,服务器端出了点问题...感谢您的支持以上是关于为啥图像路径中的图像不显示在 UIImageView 中?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ArrayAdapter 在 ArrayList 中的 ListView 中显示项目(图像的路径)?