با سلام راهی هست که ما بتونیم قبل از اینکه یک صفحه وب رو دریافت کنیم طول و رض تصاویر موجود در اون صفحه رو بفهمیم؟
با سلام راهی هست که ما بتونیم قبل از اینکه یک صفحه وب رو دریافت کنیم طول و رض تصاویر موجود در اون صفحه رو بفهمیم؟
لزوما نه.ممکنه element ی که تصویر توش قرار گرفته (و یا استایل اون element) اندازه "نمایش" تصویر رو مشخص کنه که اون هم لزوما اندازه واقعی تصویر نیست.
اگه مورد خواصی مد نظرتون هست میتونین با بررسی کد HTML صفحه و کد CSS ش، ببینید آیا جایی اندازه مشخص میشه یا نه و اگه مشخص میشه اندازه واقعی هست یا نه.مثلا
index.html:
<img src="..." width="32" height="32"/>
style.css:
.SampleImageStyle
{
Width:32px;
Height:32px;
}
خارج از بحث HTML هم، توی HTTP، وقتی شما لینک یک تصویر رو داشته باشید، نهایتا میتونید اندازه اون (به بایت) رو با استفاده از ویژگی Content-Length مروبط به Header بدست بیارین.که این مورد هم شک دارم همیشه توسط سرور ارسال بشه.
من می خوام ابغاد عکس رو داشته باشم نه سایزش رو چنین چیزی رو میشه انجام داد یعنی از سرور اندازه و ابعاد رو سوال کرد
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());
}
سلام
این کد خاصیت 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;
کلیتش همینه می دونم کامل نیست ولی دو نمونه کد بالا خیلی می تونه بهت کمک کنه.
دوست من در این روش ما هر تصویر رو داریم دریافت می کنیم و من می خوام قبل از دریافتش تشخیص بدم
در مورد فایل jpg باید شش بایت اول فایل رو دریافت کنید که شامل دوبایت عرض در افست 2 و دوبایت طول در افست 4 هستش
و فرمت های دیگه هم شبیه این خواهد بود
کد تورج هم به نظر درست میاد چون فایل رو بصورت استریم میگیره و قبل از این که تمام فایل دریافت بشه میشه مشخصات فایل رو ازش گرفت
کدی در مورد گرفتن این چند بایت اول دارین ممنون میشم قرار بدین