PDA

View Full Version : تشخیص عکس



mehrdad372
جمعه 01 بهمن 1389, 13:16 عصر
سلام
من پروژه من طوریه که باید یه فایل عکس رو بگیره و در یه کادر عکس نشان بده.
آیا برنامه ای هست غیر از پسوند فایل که تشخصی بده این فایل عکس هست یا نه؟

ali.rezaei7
جمعه 01 بهمن 1389, 15:39 عصر
درود. تابعي كه نوشتم مي تونه فرمت هاي JPG,BMP,TIF,GIF,PNG رو پشتيباني كنه و در صورتي كه فايل مورد نظر، يكي از اين فرمت هاي باشه در خروجي مقدار TRUE رو بر مي گردونه.


private bool IsPicture(string FileName)
{
byte[][] ImagesHeader = new byte[][]
{
new byte[]{ 0xFF, 0xD8 },//JPG Header
new byte[]{ 0x42, 0x4D },//BMP Header
new byte[]{ 0x47, 0x49, 0x46 },//GIF Header
new byte[]{ 0x49, 0x49, 0x2A },//TIF Header
new byte[]{0x89,0x50,0x4E,0x47}//PNG Header
};
byte[] Header;
FileStream fs = new FileStream(FileName, FileMode.Open);

for (int i = 0; i < ImagesHeader.Length; i++)
{
Header = new byte[ImagesHeader[i].Length];
fs.Read(Header, 0, Header.Length);

if (Header.SequenceEqual(ImagesHeader[i]))
{
fs.Close();
return true;
}

fs.Seek(0, SeekOrigin.Begin);
Header = null;
}
fs.Close();
return false;

}

نوع فرمت تصوير در فايهاي گرافيكي، در شروع فايل ذخيره شده است. در كد بالا چند بايت آغازين فايل با عناصر آرايه ImagesHeader بررسي مي شه. و در صورتي كه با يكي از اونا برابر باشه، در اين صورت فايل مورد نظر تصوير هست و تابع مقدار TRUE بر مي گردونه.