PDA

View Full Version : سوال: دیکود کردن عکس با فرمت jpg



hastima
یک شنبه 23 خرداد 1389, 13:48 عصر
سلام
من میخوام با ++C عکس با فرمت jpg رو دیکود کنم
هیچ آشنایی از قبل هم ندارم
این رو برای پروژه کلاسی میخوام

Nima_NF
دوشنبه 24 خرداد 1389, 02:25 صبح
GDI فقط امکان ارسال تصویر JPEG به printer برای چاپ را دارد و در این زمینه محدود هست.
(از طریق توابع StretchDIBits و SetDIBitsToDevice)

اما +GDI به خوبی از فرمت JPEG پشتیبانی می کند و می توانید از آن در ویندوز استفاده کنید (به شرط اینکه اگر نبود dll مورد نظر در سیستم فرد نصب یا کپی شود)
+GDI با ++C نوشته شده است.


خب اولا +GDI فقط مال ++C. ثانیا بالاخره یه بنده خدایی نشسسه +GDI رو نوشته لابد از اون توابه استفاده کرده!
و خیلی از تکنولوژیهای مایکروسافت استقبال کمی ازشون میشه. در مورد +GDI هم فکر می کنم همین اتفاق افتاده باشه! یعنی کم تر کسی باهاش آشناست.
این طور که شما فکر می کنید نیست!

- اول اینکه JPEG یک فرمت استاندارد هست و قوانین آن در دسترس.

- دوم اینکه GDI+ خیلی پر کاربرد هست، مثلا اکثر امکانات Winamp با +GDI هست، همین طور بسیاری دیگر.

- سوم اینکه کتابخانه های گرافیکی در .Net از همین +GDI استفاده می کنند (C#‎‎‎‎‎‎ , VB.Net و غیره)
.NET همین توابع +GDI را کپسوله کرده است و هنگامی که .Net را نصب می کنید کتابخانه Gdiplus.dll در سیستم نصب می شود.
برای اطلاعات بیشتر از لینک های Graphics Class (http://msdn.microsoft.com/en-us/library/system.drawing.graphics_members.aspx) و System.Drawing (http://msdn.microsoft.com/en-us/library/system.drawing.aspx) استفاده کنید.



من میخوام با ++C عکس با فرمت jpg رو دیکود کنم
هیچ آشنایی از قبل هم ندارم
این رو برای پروژه کلاسی میخوام JPEG یک فرمت استاندارد هست و می توانید نحوه پیاده سازی و قوانین را از سایت رسمی مشاهده کنید:
www.jpeg.org/jpeg/index.html (http://barnamenevis.org/forum/www.jpeg.org/jpeg/index.html)

با این حال، برای انجام load / save و نمایش ، به راحتی از بهترین سورس کد پیاده سازی شده توسط گروه Independent JPEG Group استفاده کنید. لینک این سایت:
www.ijg.org (http://www.ijg.org/)


-

Nima_NF
دوشنبه 24 خرداد 1389, 10:47 صبح
اما برای کارای گرافیکی پیش رفته تر معمولا از directx استفاده میشه. حتتا Adobe Reader هم بدون نصب directx مناسب کار نمی کنه.

GDI+ ربط خاصی به DirectX ندارد، نسخه پیشرفته تر و به قولی جایگزین GDI هست.

DirectX یا به نوعی شتابدهنده های گرافیکی از کارت گرافیک (GPU) استفاده می کنند و GDI+ / GDI از CPU ، لذا برای کارهای گرافیکی معمولی مرسوم هستند،البته لزومی ندارد کار گرافیکی خاصی باشد، رسم آیکن ها، چند خط نوشته ، تصاویر ساده و غیره توسط GDI+ / GDI انجام می شود.

کسی که ساده ترین برنامه ویندوزی را می نویسد بالاخره باید حداقل یا از GDI و یا از +GDI استفاده کند، مگر اینکه می خواهد به سراغ DirectX یا OpenGL برود که قضیه فرق می کند.

و البته جدا از اینکه کلا DirectX از قابلیت های 3D پشتیبانی می کند و GDI / GDI+ فقط برای کارهای 2D در حد ساده هستند.

در کل اگر می بینیم تعداد افرادی که از +GDI استفاده می کنند کمتر از GDI هست به این خاطر هست که افراد دوست ندارند بی خودی برنامه را نیازمند 2MB dll بیشتر کنند در حالی که برنامه به آن قابلیت ها نیاز ندارد و یا اینکه آن ها در حالت نرم افزاری (با CPU) کند تر عمل می کنند. مثلا حالت transparency یا fade شدن پنجره ها در حالت CPU بسیار کند هست و CPU بالایی نیز نیاز دارد.


پاورقی: من این مطالب را برای سایر دوستان نوشتم که وقتی مطالب این تاپیک را مطالعه می کنند چندان گمراه نشوند.

hastima
دوشنبه 24 خرداد 1389, 11:32 صبح
راستش من از چیزایی که جواب دادین سر در نیاوردم
از همه ممنونم
لطفا ساده تر توضیح بدین

alihoseini
پنج شنبه 27 خرداد 1389, 12:52 عصر
سلام
برنامه ديكود كردن JPG در آدرس زير هست :

http://www.ijg.org
http://www.ijg.org/files/jpegsr8b.zip

من برنامه رو گرفتم ولي نتونستم استفاده كنم

كلي خطا ميده

البته فكر كنم من يجايي اشتباه ميكنم

اگر كسي از اين برنامه استفاده كرده و درباره اون توضيح بده ممنون ميشم