PDA

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



Diabolic
دوشنبه 16 شهریور 1388, 15:26 عصر
سلام
من میخوام یه عکس رو باز کنم بعد برنامه بفهمه که فرمت عکس چیه
JPG
BMP
یا بقیه
ممنون میشم راهنمایی کنید

vcldeveloper
دوشنبه 16 شهریور 1388, 15:58 عصر
از روی چی بفهمه؟ از روی پسوند فایل، یا فرمت محتوای فایل؟ اگر منظور فرمت محتوای فایل هست، باید هر یک از فرمت های مورد نظرتان را بررسی کنید، و ببینید داده را به چه شکلی ذخیره می کنند، و چه هدر هایی به فایل اضافه می کنند. بعد در فایل دنبال این الگوها بگردید و ببینید آیا محتوای فایل با هیچکدام از الگوهای مد نظر شما سازگار هست یا نه.

از روی پسوند هم ساده هست : ExtractFileExt پسود فایل رو به شما میده.

Diabolic
دوشنبه 16 شهریور 1388, 19:30 عصر
ممنون علی جان
همون پسوند فایل منظورمه
میشه یه نمونه بدی ؟!

vcldeveloper
سه شنبه 17 شهریور 1388, 01:09 صبح
if SameText(ExtractFileExt(FileName), '.jpg') then
ShowMessage('File is JPG');

Diabolic
چهارشنبه 18 شهریور 1388, 01:06 صبح
خب این کد همونطور که گفتید پسوند فایل رو میده ولی

الان آیا این کد به ما نوع اصلی عکس رو میگه که همان bmp هست یا خیر ؟

اگر این کد نمی تونه این کار رو بکنه ، با چه کدی نوع اصلی تصویر رو میشه بدست آورد

یعنی شاید یکی دستی اونو تغییر داده باشه . کار دیگه ای میشه کرد ؟
اگه میشه ممنون میشم یه نمونه سورس بدید

تشکر فراوان

vcldeveloper
چهارشنبه 18 شهریور 1388, 06:21 صبح
اگر این کد نمی تونه این کار رو بکنه ، با چه کدی نوع اصلی تصویر رو میشه بدست آورد
گفتم که، برای اینکه بفهمید آیا واقعا اون فایل فرمتش همونی هست که توی پسوند ذکر شده، باید با ساختار فرمت مورد نظر خودتون آشنا باشید، بخشی از فایل را بخوانید، و ببینید آیا با الگوی ساختاری آن فرمت مطابقت پیدا میکنه یا نه. مثلا در یک فرمت خاص ممکنه 4 بایت اول برای مشخص کردن نوع فرمت تصویر باشه. در یک فرمت دیگه، ممکن هست اطلاعات خاصی در انتهای فایل ثبت بشه.

این بر عهده شما هست که ساختار داخلی هر یک از فرمت های مورد نظر خودتان را بدست بیارید.

Diabolic
چهارشنبه 18 شهریور 1388, 07:43 صبح
دوستان کسی میتونه کمکم کنه که بفهمم باید چیکار کنم ؟

kamalhamidi
پنج شنبه 19 شهریور 1388, 12:11 عصر
سلام

خب چطور میشه دو فرمت JPG و BMP رو تشخیص داد

hadisalahi2
پنج شنبه 19 شهریور 1388, 18:44 عصر
با سلام
یک راهش اینه که یک متغیر از نوع Jpeg تعریف کنی و عکس انتخاب شده رو داخل این متغیر بریزی. حالا اگه عملیات مقدار دهی به متغیر با موفقیت انجام شد، معلومه که عکس از نوع Jpg.
برای تشخیص هم از یک Try .. Except و یک متغیر منطقی میشه استفاده کرد.

Felony
پنج شنبه 19 شهریور 1388, 21:54 عصر
با سلام
یک راهش اینه که یک متغیر از نوع Jpeg تعریف کنی و عکس انتخاب شده رو داخل این متغیر بریزی. حالا اگه عملیات مقدار دهی به متغیر با موفقیت انجام شد، معلومه که عکس از نوع Jpg.
برای تشخیص هم از یک Try .. Except و یک متغیر منطقی میشه استفاده کرد.
به هیچ عنوان روش منطقی نیست ، همون راهی که آقای کشاورز گفتن بهترین راه است ، به راحتی با مقایسه ی Header فایل میتونید بفهمید چه فرمتی داره .

tdkhakpur
پنج شنبه 19 شهریور 1388, 22:17 عصر
دوستان کسی میتونه کمکم کنه که بفهمم باید چیکار کنم ؟
ببینید فرمتهای گوناگونی وجود دارد که قالب و الگوریتم خاص خودشان را دارند مانند pcx, bmp,jpg, png, tga, سایر فایلهای تصویری دیگر.
همه این فایلها برای خودشان در ظاهر عمومی دارای پسوند مخصوص هستند ولی از نظر نرم افزاری این پسوند کاملا بی ارزش بوده و اعتبار آنچنانی ندارند برای تشخیص نرم افزاری این نوع فایلها, در داخل هدر فایل و در یک مکان استاندارد از هدر, کد خاصی وجود دارد که نشانگر نوع قالب و نسخه فایل و سایر مشخصات است که باید این کدها برسی شوند تا نوع فایل به درستی تشخیص داده شود.
شما به کتابی به اسم قالب فایلهای گرافیکی از انتشارات قانوس مراجعه کنید همه هدرها و قالبها درش قید شده است.

kamalhamidi
جمعه 20 شهریور 1388, 01:38 صبح
سلام

ممنون از راهنمایی شما

راستش من زیاد با فایل های دیگه کار ندارم و برای من و Diabolic تنها دو فایل jpg و bmp مهمه

لذا

اگر کسی از دوستان میتونه نحوه تشخیص دو فایل jpg و bmp رو به من بگه ممنون میشم

تشکر

DAMAVAND
جمعه 20 شهریور 1388, 02:18 صبح
سلام

ممنون از راهنمایی شما

راستش من زیاد با فایل های دیگه کار ندارم و برای من و Diabolic تنها دو فایل jpg و bmp مهمه

لذا

اگر کسی از دوستان میتونه نحوه تشخیص دو فایل jpg و bmp رو به من بگه ممنون میشم

تشکر

همان طوري که دوستان قبلا اشاره کردن با چک کردن ابتداي فايل ميتونيد به نوع فرمتش پي بريد .
اين يک مثال ساده که نوع عکس رو تشخيص ميده ,البته من فقط اولين قسمت رو چک کردم ميتونيد چنتا رو اضافه چک کنيد ,براي اطمينان که فکر نميکنم ضروري باشه !

kamalhamidi
شنبه 21 شهریور 1388, 19:58 عصر
سلام

ممنون از این مثال که ساختید

ولی یک مشکل وجود داره ، وقتی که یک عکس دیگه مثلا یک png رو باهاش تست میکنم درست کار میکنه

حالا یک عکس jpg رو باهاش باز میکنم و باز هم درست کار میکنه ولی وقتی دوباره یک عکس دیگه بغییر از jpg و bmp رو باز میکنم به اشتباه میگه که jpg هست ( همان عکس قبلی )

چگونه این مشکل رو برطرف کنم

تشکر

DAMAVAND
شنبه 21 شهریور 1388, 21:08 عصر
مثال قبلي رو اصلاح کردم .
خودم تست کردم مشکلي نداره و چهار نوع فرمت مختلف عکس رو تشخيص ميده
موفق باشيد.