0

ここに画像の説明を入力してください

やあ、

私はURLから画像を非同期にロードします、問題は画像が半分だけロードされるということです私はこれが起こっている理由を理解していません、ネットでいくつかの検索の後、私はそのための2つの3つの理由を取得します、

1サーバー側の問題が原因で発生する可能性があります。

2画像のギ酸塩が原因で発生する可能性があります(ただし、ギ酸塩(pngとjpg)の両方で発生するため、問題はありません)。

3画像のサイズが大きすぎるために発生する可能性があります(画像のサイズが200kbから700kbの間)

それはブラウザでも起こりますが、時々起こります。

plzリプレイよりもこの問題に関する解決策やアドバイスがある場合。

4

2 に答える 2

1

このコードを使用してください..それはあなたのために役立つかもしれません

 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];
于 2012-12-04T06:29:51.700 に答える
0

私もこの種の問題に直面していました。それは基本的に、非同期スレッドがイメージを完全にダウンロードできない場合のネットワークのエラーです。解決策は、ダウンロードした画像が有効かどうかを確認することです。有効でない場合は、再度ダウンロードしてください。以下は、画像が有効かどうかを確認するために使用した方法です。

注:このチェックはPNG画像のみを対象としています。JPEGをチェックするには、「if」状態の最初と最後の2バイトを置き換えるだけです。

- (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 
}

答えを受け入れることを忘れないでください。

于 2012-12-04T06:58:43.647 に答える