6

次のような URL から画像を取得するための C# コードがありますhttp://i.imgur.com/QvkaduU.jpgが、次のような Web ページから画像を取得するにはどうすればよいhttp://imgur.com/gallery/QvkaduUですか?

これを行うための「簡単な」方法はありますか、それとも HTML を取得して、他のすべてよりも大きい画像を HTML で検索する C# パーサーを構築する必要がありますか?

これを片付けさせてください。たとえば Facebook のステータス更新フィールドに (HTML バージョン)を貼り付けるhttp://imgur.com/gallery/QvkaduUと、メインの画像が検索され、そこからサムネイルが作成されます。これはまさに私が探している動作です。問題は、これがどのように行われるかです。独自の HTML パーサーを作成する必要がありますか、またはこれを取得する簡単な方法はありますか?

4

6 に答える 6

5

任意の URL の「適切な」サムネイル画像を取得する簡単な方法はありません。

これを行うための Facebook のアルゴリズムはかなり複雑です。ページ開発者は、次のようなさまざまなメタ タグを に追加することで、ヒントを与えることができます<head>

<meta property="og:image" content="http://url_to_your_image_here" />

また

<link rel="image_src" href="http://www.code-digital.co.uk/preview.jpg" />

(詳細はこちら)

... したがって、Facebook のアルゴリズムを複製したい場合は、ページのソースを取得し、上記のような「ヒント」を解析する必要があります (他の「ヒント」形式を見逃していないことを確認することをお勧めします) )、ページにそれらのいずれかが含まれていない場合は、フォールバック アルゴリズムを考え出します。

より現実的な解決策は、他の誰かの URL -> サムネイル システムを使用することです。

Facebook のバージョンが気に入った場合は、API を介して特定の URL の Facebook のサムネイルをリクエストできるはずです。

この種のものを提供する他のサービスは次のとおりです。

于 2013-03-26T15:26:17.007 に答える
1

HTML ソース全体を取得し、正規表現を使用してすべての<img ... src="...">パラメーターと< ... style="... background-image: ...;">css インライン プロパティを配置し、リンクの背後にあるすべてのファイルを一時的にダウンロードしようとします。次に、(ビットマップに変換して)ピクセルサイズを確認します。最大の画像が必要な画像になるはずです。

Google は、ピクセル サイズを確認して画像を変換する方法を教えてくれるかもしれません。

HTML ソースからすべての画像リンクを取得するための正規表現は、

<img[^>]+src=\"([^"]+)\".*?>|<[^>]+style=\"[^"]*background-image:\s*url\(\s*'?([^')])\s*'?)\s*;.*?>(テストされていませんが、かなり確実です)

結果は 2 番目または 3 番目のグループ インデックスに表示されます。また、相対リンクに現在の URL のプレフィックスを付けることを忘れないでください。

于 2013-03-27T13:34:31.127 に答える
1

あなたはすでに正しい方向に進んでいます。はい、最も信頼できる方法は、HTML を取得し、それを解析して画像を探すことです。次に、位置とサイズに基づいて画像をランク付けします。たとえば、最初に見つけた画像がサムネイルを作成するのに十分な大きさである場合はクールですが、小さい場合は次の画像に移動します。Timthumb のような画像プラグインを使用することをお勧めします (私は思ういつかASP.NETバージョンを見たことがあります)、画像をキャッシュして、サムネイルを検索してWebサイトを表すと、代わりにキャッチから画像を呼び出すことができます。

于 2013-03-27T20:41:54.720 に答える
0

あなたはこのようなことをしようとすることができますか?

public void ProcessRequest(HttpContext context)
    {
      {
            // load here the image 
            ....
            // and send it to browser
            ctx.Response.OutputStream.Write(imageData, 0, imageData.Length);
       }
    }

ここで彼らが話していることを試すこともできます。私はそれを試しました、そしてそれは魅力のように働きました。

http://www.dotnetspider.com/resources/42565-Download-images-from-URL-using-C.aspx

于 2013-03-19T20:11:37.270 に答える
0

これを試してもらえますか

public Bitmap getImageFromURL(String sURL)
{
    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(sURL);
    myRequest.Method = "GET";
    HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
    System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(myResponse.GetResponseStream());
    myResponse.Close();

    return bmp;
}

URLからpictureBox に画像を取得する方法は? (Windows モバイル)

于 2013-03-19T21:23:46.837 に答える