ابزار حرفه ای تفکیک رنگ به زبان Visual Basic 6

the_king

مدیرکل انجمن
فکر ساختن این برنامه از زمانی به ذهنم خطور کرد که این گفتگو را دیدم :
"چگونه یک کار 7 رنگ را در فتوشاپ تفکیک رنگ کنیم؟"
http://forum.majidonline.com/showthread.php?t=87346

در حقیقت با وجود امکانات پیشرفته نرم افزارهایی مثل Photoshop، این عمل را نمی شه به سرعت و سادگی انجام داد.
من با توجه به این مشکل یک ابزار را به زبان Visual Basic ساختم که بتونه از یک الی چند صد فایل تصویری را در یک مرحله
آنالیز کنه و کانالهای رنگی مورد درخواست کاربر رو از داخلش استخراج کنه و در یک فایل دیگه ذخیره کنه.

اول با توجه به کندی سرعت زبان VB در عملیات گرافیکی، از تسلط ام به زبان اسمبلی برای نوشتن چندین روتین گرافیکی
اقدام کردم، قبلا چنین کاری را بارها انجام دادم و از نتیجه آن آگاه بودم.
یک کد بهینه شده گرافیکی به زبان اسمبلی از نمونه بهینه شده به زبان ++C حدود 3 برابر سریعتره، در مورد NET. و
+GDI اوضاع از این هم خرابتره، روتینی واسه تغییر سایز تصویر Bitmap نوشته بودم که از لحاظ کیفیت دقیقا مشابه
نمونه +GDI (مد Nearest Neighbor) است ولی از لحاظ سرعت 9 برابر سریعتره.

در این برنامه من 12 تابع نوشتم که حتی تغییر Contrast تصویر و کاهش نویز تصویر (Noise Reduction) را هم انجام می دهند.
قسمت باقی مانده مساله، اینترفیس کاربر بود که Visual Basic در این مورد ایده آل است.
چون VB6 امکان ذخیره سازی در فایلهای JPEG را با امکانات قابل قبولی نداره، یک کتابخانه DLL متعلق به INTEL را هم که
مخصوص ذخیره سازی و فراخوانی فایلهای JPEG است بکار بردم.

خلاصه ای از امکانات برنامه از این قراره :
- امکان فراخوانی هرگونه فایلهای BMP و GIF و JPEG.
- قابلیت استخراج کانالهای رنگی Red و Green و Blue و Cyan و Magenta و Yellow و Black و Hue و Luminance و Saturation بصورت ترکیبی و به انتخاب کاربر
- قابلیت ذخیره سازی فایل بصورت BMP 8 بیتی و BMP 24 بیتی و JPEG با کیفیت 0 الی 100.
- امکان تغییر Contrast و کاهش نویز تصویر در مراحل استخراج کانال رنگی
- قابلیت معکوس کردن (Invert) کانال رنگی برای استفاده در مقاصد چاپی و نمایشی
- قابلیت انتخاب نوع رنگ زمینه برای کانالهای رنگ در سه حالت :
- 1- سیاه و سفید Grayscale
- 2- رنگی با زمینه سفید
- 3- رنگی با زمینه سیاه
- قابلیت نمایش نمونه خروجی (Preview) در هنگام تنظیم پارامترهای خروجی.
- امکان فراخوانی یکباره بیش از یک فایل در یک مرحله از چندین پوشه مجزا
- ارائه گزارش کامل مراحل تبدیل و ذخیره سازی خروجی
- سرعت استخراج و ذخیره سازی بسیار بالا
- واسط کاربر ساده و حرفه ای

معایب شناسایی شده برنامه :
- با فایلهایی که مسیر آنها ANSI نباشد (مثل نام فایل و پوشه فارسی) مشکل دارد. این مساله به ساختار فایل
در VB مربوط است، البته با کمی کد نویسی اضافه می توان آنرا هم رفع کرد.

برای اجرای این برنامه به یک ویندوز 98 یا بالاتر نیاز دارید،
(در ویندوز 98 بایستی فایلهای Runtime مربوط به VB6 نصب شده باشد).
نیازی به پیوست دو فایل جانبی DLL برنامه نیست، آنها در داخل خود فایل اجرایی قرار دارند و بصورت خودکار استخراج می شوند.
این برنامه رایگان است و در مرحله Beta به سر می برد. لطفا اشکالات و نواقص آنرا به حقیر گزارش دهید تا تکمیل کنم.
بایستی برایش راهنما می ساختم ولی فعلا فرصت نکردم.
این برنامه Open Source نیست، از بابت ارسال کد برنامه شرمنده ام.

فایل اجرایی برنامه بصورت ZIP شده ضمیمه این پست می باشد.

هنوز هیچی نشده دو تا باگ را کشف و رفع نقص نمودم :
- موقعی که فایلی Overwrite می شد و از کاربر سوال می کرد، گزینه Cancel عملکرد درستی نداشت.
- قابلیت Same Folder درست عمل نمی کرد.
 

پیوست ها

  • Preview1.jpg
    Preview1.jpg
    39.8 کیلوبایت · بازدیدها: 6
  • Preview2.jpg
    Preview2.jpg
    39.1 کیلوبایت · بازدیدها: 3
  • Channel Extractor.zip
    167.5 کیلوبایت · بازدیدها: 21
آخرین ویرایش توسط مدیر:

جدیدترین ارسال ها

بالا