你好,
我从 url 异步加载图像,问题是图像只加载了一半我不明白为什么会发生这种情况,在网上搜索后我得到了两个三个原因,
1它可能是由于服务器端问题而发生的。
2它可能是由于图像格式而发生的(但是对于格式(png和jpg)都发生了,所以这不是问题)。
3 这可能是因为图像尺寸太大(图像尺寸在 200kb 到 700kb 之间)
它也发生在浏览器中,但有时。
如果您对此问题有任何解决方案或建议,请重播。
你好,
我从 url 异步加载图像,问题是图像只加载了一半我不明白为什么会发生这种情况,在网上搜索后我得到了两个三个原因,
1它可能是由于服务器端问题而发生的。
2它可能是由于图像格式而发生的(但是对于格式(png和jpg)都发生了,所以这不是问题)。
3 这可能是因为图像尺寸太大(图像尺寸在 200kb 到 700kb 之间)
它也发生在浏览器中,但有时。
如果您对此问题有任何解决方案或建议,请重播。
使用此代码..它可能对您有用
NSString *htmlString = [NSString stringWithFormat:
@"<html>"
"<head>"
"<script type=\"text/javascript\" >"
"function display(img){"
"var imgOrigH = document.getElementById('image').offsetHeight;"
"var imgOrigW = document.getElementById('image').offsetWidth;"
"var bodyH = window.innerHeight;"
"var bodyW = window.innerWidth;"
"if((imgOrigW/imgOrigH) > (bodyW/bodyH))"
"{"
"document.getElementById('image').style.width = bodyW + 'px';"
"document.getElementById('image').style.top = (bodyH - document.getElementById('image').offsetHeight)/2 + 'px';"
"}"
"else"
"{"
"document.getElementById('image').style.height = bodyH + 'px';"
"document.getElementById('image').style.marginLeft = (bodyW - document.getElementById('image').offsetWidth)/2 + 'px';"
"}"
"}"
"</script>"
"</head>"
"<body style=\"margin:0;width:100%;height:100%;\" >"
"<img id=\"image\" src=\"%@\" onload=\"display()\" style=\"position:relative\" />"
"</body>"
"</html>",pass your url string here];
我也遇到过这类问题,基本上是异步线程无法完全下载图像时网络错误。解决方案是检查下载的图像是否有效。如果无效则重新下载。以下是我用来检查图像是否有效的方法:
注意:此检查仅适用于 PNG 图像,要检查 JPEG,只需在“if”条件下替换第一个和最后两个字节。
- (BOOL)isImageValid:(NSData *)data
{
BOOL val = YES;
if ([data length] < 4)
val = NO;
const unsigned char * bytes = (const unsigned char *)[data bytes];
if (bytes[0] != 0x89 || bytes[1] != 0x50)
val = NO;
if (bytes[[data length] - 2] != 0x60 ||
bytes[[data length] - 1] != 0x82)
val = NO;
return val; //return YES if valid
}
不要忘记接受答案。