C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: ネット上から読み込んだ画像のファイルサイズ


(過去ログ 123 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■73335 / inTopicNo.1)  ネット上から読み込んだ画像のファイルサイズ
  
□投稿者/ こういち (7回)-(2014/09/13(Sat) 17:02:45)

分類:[VB.NET/VB2005 以降] 

2014/09/13(Sat) 17:07:32 編集(投稿者)

タイトルのとおりなのですが、
以下のコードにて、ネット上の画像を取得しております。

そこで、取得した画像を判別するために、ファイルサイズを取得したいと考えているのですがどうすればよいかわかりません。


Dim wr As System.Net.HttpWebRequest = System.Net.WebRequest.Create("http://www.yahoo.co.jp/favicon.ico")
Dim res As System.Net.HttpWebResponse = wr.GetResponse()
Using stm As System.IO.Stream = res.GetResponseStream()
Dim img as Image = Image.FromStream(stm)
End Using


画像が判断できればファイルサイズでなくともかまわないのですが、ほかに手段はありますでしょうか?
ご教示いただければ幸いです。
引用返信 編集キー/
■73336 / inTopicNo.2)  Re[1]: ネット上から読み込んだ画像のファイルサイズ
□投稿者/ Hongliang (232回)-(2014/09/13(Sat) 17:14:57)
> Using stm As System.IO.Stream = res.GetResponseStream()
> img = Image.FromStream(stm)
> End Using
直接Image.FromStreamするのではなく、NewしたMemoryStreamにレスポンスのStreamをCopyToするとか。
その後、Imageオブジェクトを作るならMemoryStreamのPositionを0にしてMemoryStreamからImage.FromStream。

> 画像が判断できればファイルサイズでなくともかまわないのですが、ほかに手段はありますでしょうか?
”判別””判断”の基準が分からないことには何とも。
画像本体は同じだがメタデータ部分だけ違う場合はどうかとか。
白黒の画像で片や1bpp, 片や24bpp, でも表示上は同じって場合はどうかとか。
// 他にもいろいろなケースが考えられると思いますが。
引用返信 編集キー/
■73337 / inTopicNo.3)  Re[1]: ネット上から読み込んだ画像のファイルサイズ
□投稿者/ 魔界の仮面弁士 (122回)-(2014/09/13(Sat) 18:23:44)
No73335 (こういち さん) に返信
> そこで、取得した画像を判別するために、ファイルサイズを取得したいと考えているのですがどうすればよいかわかりません。

画像データをダウンロードせずに、
ファイルサイズだけ取得するならこんな感じ。


Imports System.Net
Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MsgBox(GetSize("http://www.yahoo.co.jp/favicon.ico"))
    End Sub

    Private Function GetSize(url As String) As Integer?
        Dim req As HttpWebRequest = Nothing
        Dim res As HttpWebResponse = Nothing
        Try
            req = DirectCast(WebRequest.Create(url), HttpWebRequest)
            req.Method = "HEAD"
            res = DirectCast(req.GetResponse(), HttpWebResponse)
            Return res.ContentLength
        Catch ex As Exception
            Return Nothing
        Finally
            If res IsNot Nothing Then res.Close()
        End Try
    End Function
End Class


> 画像が判断できればファイルサイズでなくともかまわないのですが、
画像の何を判断したいのでしょうか?

引用返信 編集キー/
■73338 / inTopicNo.4)  Re[2]: ネット上から読み込んだ画像のファイルサイズ
□投稿者/ こういち (8回)-(2014/09/13(Sat) 18:39:16)
> Hongliang さん、魔界の仮面弁士さん
レスありがとうございます。


具体的に行いたいこととしては、

http://favicon.hatena.ne.jp/?url=http://www.yahoo.co.jp

このように、「?url」以下にアドレス入れますと、そのサイトのファビコンを取得できるのですが、
サイト自体にファビコンが設定されていない場合に返す画像ファイルがあります。
例:http://favicon.hatena.ne.jp/?url=http://

それをVB上で、ファビコンが設定されていないため返された画像なのかどうか判断したいのが目的です。

そこで、取得したファイルサイズ(データサイズ)で判断しようと思ったのですが、
厳密に行うとすると、ピクセルごと色情報を比較したほうがよいのかなとも思いますが、
もっと簡単な方法があればと考えて、質問した次第です。

引用返信 編集キー/
■73339 / inTopicNo.5)  Re[3]: ネット上から読み込んだ画像のファイルサイズ
□投稿者/ tinq (19回)-(2014/09/13(Sat) 22:22:39)
No73338 (こういち さん) に返信
> それをVB上で、ファビコンが設定されていないため返された画像なのかどうか判断したいのが目的です。
>
> そこで、取得したファイルサイズ(データサイズ)で判断しようと思ったのですが、
> 厳密に行うとすると、ピクセルごと色情報を比較したほうがよいのかなとも思いますが、

毎回完全に同じ画像ならデータが同じかを比較したほうが間違いがないと思います。
画像にして比較をするのは遅いので、直接バイナリを比較してしまったほうがいいです。
Streamの最初から1バイトずつ比較して、違うのがきたら終了。もしくは、ハッシュを求めて比較。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -