PDA

View Full Version : تشخیص طول و عرض یک عکس قبل از دانلود آن



sara_aryanfar
دوشنبه 19 فروردین 1392, 17:40 عصر
با سلام راهی هست که ما بتونیم قبل از اینکه یک صفحه وب رو دریافت کنیم طول و رض تصاویر موجود در اون صفحه رو بفهمیم؟

plus
دوشنبه 19 فروردین 1392, 19:17 عصر
لزوما نه.ممکنه element ی که تصویر توش قرار گرفته (و یا استایل اون element) اندازه "نمایش" تصویر رو مشخص کنه که اون هم لزوما اندازه واقعی تصویر نیست.
اگه مورد خواصی مد نظرتون هست میتونین با بررسی کد HTML صفحه و کد CSS ش، ببینید آیا جایی اندازه مشخص میشه یا نه و اگه مشخص میشه اندازه واقعی هست یا نه.مثلا


index.html:
<img src="..." width="32" height="32"/>



style.css:
.SampleImageStyle
{
Width:32px;
Height:32px;
}

خارج از بحث HTML هم، توی HTTP، وقتی شما لینک یک تصویر رو داشته باشید، نهایتا میتونید اندازه اون (به بایت) رو با استفاده از ویژگی Content-Length مروبط به Header بدست بیارین.که این مورد هم شک دارم همیشه توسط سرور ارسال بشه.

sara_aryanfar
سه شنبه 20 فروردین 1392, 10:14 صبح
من می خوام ابغاد عکس رو داشته باشم نه سایزش رو چنین چیزی رو میشه انجام داد یعنی از سرور اندازه و ابعاد رو سوال کرد

fakhravari
سه شنبه 20 فروردین 1392, 10:58 صبح
using (Bitmap bmp = new Bitmap(GetImageFromUrl(Url)))
{
Size sz = new Size(bmp.Width, bmp.Height);
return sz;
}




public static System.Drawing.Image GetImageFromUrl(string Url)
{
HttpWebRequest Request;
HttpWebResponse Response;

Request = (HttpWebRequest)System.Net.WebRequest.Create(Url);
Response = (HttpWebResponse)(WebResponse)Request.GetResponse( );
return System.Drawing.Image.FromStream(Response.GetRespon seStream());
}

tooraj_azizi_1035
سه شنبه 20 فروردین 1392, 11:06 صبح
سلام
این کد خاصیت src هر عکس رو برمیگردونه چون شما اون رو لازم دارید:

// Bing Image Result for Cat, First Page
string url = "http://www.bing.com/images/search?q=cat&go=&form=QB&qs=n";

// For speed of dev, I use a WebClient
WebClient client = new WebClient();
string html = client.DownloadString(url);

// Load the Html into the agility pack
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);

// Now, using LINQ to get all Images
List<HtmlNode> imageNodes = null;
imageNodes = (from HtmlNode node in doc.DocumentNode.SelectNodes("//img")
where node.Name == "img"
&& node.Attributes["class"] != null
&& node.Attributes["class"].Value.StartsWith("img_")
select node).ToList();

foreach(HtmlNode node in imageNodes)
{
Console.WriteLine(node.Attributes["src"].Value);
}


و این یکی طول و عرض رو برمیگردونه:

Stream str = null;
HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create(ImageUrl);
HttpWebResponse wRes = (HttpWebResponse)(wReq).GetResponse();
str = wRes.GetResponseStream();

var imageOrig = System.Drawing.Image.FromStream(str);
int height = imageOrig.Height;
int width = imageOrig.Width;


کلیتش همینه می دونم کامل نیست ولی دو نمونه کد بالا خیلی می تونه بهت کمک کنه.

sara_aryanfar
چهارشنبه 21 فروردین 1392, 18:54 عصر
دوست من در این روش ما هر تصویر رو داریم دریافت می کنیم و من می خوام قبل از دریافتش تشخیص بدم

leonard
چهارشنبه 21 فروردین 1392, 20:11 عصر
در مورد فایل jpg باید شش بایت اول فایل رو دریافت کنید که شامل دوبایت عرض در افست 2 و دوبایت طول در افست 4 هستش
و فرمت های دیگه هم شبیه این خواهد بود
کد تورج هم به نظر درست میاد چون فایل رو بصورت استریم میگیره و قبل از این که تمام فایل دریافت بشه میشه مشخصات فایل رو ازش گرفت

sara_aryanfar
چهارشنبه 23 بهمن 1392, 12:08 عصر
کدی در مورد گرفتن این چند بایت اول دارین ممنون میشم قرار بدین