من چند تا سوال داشتم :
ما اگه يه عكس رو به صورت باينري "for binary" باز كنيم و شرو كنيم به رسم اون عكس ٬ خيلي از نظر زماني طولاني ميشه ولي اگه اون عكس رو با دستور لودپيكچر باز كنيم خيلي سري باز ميشه ٬ اون چطور عمل ميكنه ٬ غير از خوندن كد رنگه ؟
من دارم روي يه برنامه كار ميكنيم كه يكي از نياز هاي اون گرفتن رنگ هاي پيكسل هاي متوالي يه عكسه و بديهيه كه اگه عكس بزرگ باشه زمان خيلي طلف ميشه ... چون من دو تا حلقه دارم كه يكي سطر و اون يكي ستون رو ميشماره و با دستور point رنگ رو ميگيرم ... دنبال راهي هستم كه سرعت اين كار رو بالا ببره و خوب راهي كه به ذهنم رسيد باز كردن اون عكس به شيوه ي باينري بود ...
مشكل ديگه اينه كه كد گذاري يه عكس مثلا jpg رو نميدونم و وقتش رو هم ندارم كه بشينم و به اون پي ببرم ... تازه اين فقط jpg هستش ٬ بيتمپ و ico و gif و .. هم زمان خودش رو ميبره...
سوال بعدي من اينه كه با بعضي توابع يه عكس رو توليد يا كپي كرم به يه مثلا picture box ٬ چطور اون رو سيو كنم ٬ اينم بگم كه تابع savepicture كار ساز نيست ..
حالا شما اين و اين چند تا سوال ... منتظر نظراتتون هستم ...
در ضمن يه برنامه ي توپ آماده كرم كه اگه ببينين حال مي كنين ! پس اين مشكلات رو بر طرف كنين تا بفرستمش !!!
فراموش نشه كه من كنكوريم !!!!
خوب اولا خود كامپوننتها اكثرا از دستورات API براي كارشون استفاده ميكنن دومش شما احتمالا توي حلقه گذاشتي كه اطلاعات رو پيكسل پيكسل از فايل بخونه اگه يهو بخوني و بعدش پيكسل پيكسل نمايش بدي راحتره و سريعتر.
از جوابت ممنون ولي منظور من اين نبود
منظورم اينه كه توابع api چطور انقدر سزيع عمل ميكنن ؟
حالا برنامه رو ميفرستم خودتون ببينين...
بازم تشكر
سلام
اول اينكه براى افزايش سرعت پردازش تصاوير از API و بخصوص توابع کتابخانه GDI32 استفاده کن. کافیه که کلمه GDI32 رو سرچ کنی حتی تو همین سایت هم فکر می کنم ده ها برنامه نمونه پیدا کنی. حالا برنامه های نمونه رو بررسی کن اگر به مشکلی برخوردی بیا همین جا خودمون جوابت رو می دیم.
در موردی هم که گفتی تصویرت در PictureBox به وسیله SavePicture ذخیره نمی شه فکر میکنم علت ترسیمات جدید روی PictureBox باشه برای همین باید ابتدا با کد:
کد:
Set Picture1.Picture=Picture1.Image
ترسیمات رو تبدیل به تصویر کنی بعد بری اون رو ذخیره کنی ...
Darg نوشته است:سلام
اول اينكه براى افزايش سرعت پردازش تصاوير از API و بخصوص توابع کتابخانه GDI32 استفاده کن. کافیه که کلمه GDI32 رو سرچ کنی حتی تو همین سایت هم فکر می کنم ده ها برنامه نمونه پیدا کنی. حالا برنامه های نمونه رو بررسی کن اگر به مشکلی برخوردی بیا همین جا خودمون جوابت رو می دیم.
در موردی هم که گفتی تصویرت در PictureBox به وسیله SavePicture ذخیره نمی شه فکر میکنم علت ترسیمات جدید روی PictureBox باشه برای همین باید ابتدا با کد:
کد:
Set Picture1.Picture=Picture1.Image
ترسیمات رو تبدیل به تصویر کنی بعد بری اون رو ذخیره کنی ...
واقعان ممنون٬ اگه اين دستور عمل كنه كه عاليه ...
نقل قول: منظورم اينه كه توابع api چطور انقدر سزيع عمل ميكنن ؟
پاسخ سوال شما ميتونه اينها باشه البته تا اونجا كه من مي دونم :
1- استفاده از الگوريتم هاي بسيار سريع و كارا : همون طور كه ميدوني نوشتن پيكسل به پيكسل يا رسم رو صفحه داراي الگوريتم هاي مكان يابي و تحليل و .... هست كه بسيار سريع و كارا هست . مثلا الگوريتم هايي وجود دارن كه از حلقه هاي بسيار كوچيكي استفاده كي كنن و يا عمليات ترسيم رو به حداقل مي رسونن . يك از اونها بر فرض مثال الگوريتم Bresenham هست كه براي رسم يك خط مورب يا منحني بكار ميره . در اين الگوريتم هيچ گونه عمل ضرب و تقسيم با مميز شناور انجام نميشه بلكه همه اعمال با كمك جمع و تفريق . حلقه اي ساده و كوچيك انجام ميشه . :roll:
از اين تعداد الگوريتم ها زياد هستند و براي اطلاع كتاب هاي زيادي هم ( به زبان اصلي ) در اين زمينه نوشته شده !
2-دسترسي به سطح پايين : توابع موجود در GDI فقط از تكنيك اي كد نوسيس سطح بالا سود نمي برن بلكه بسياري از امور رو در سطح پايين و با حافظه مستقيم كارت گرافيك انجام ميدن كه داراي سرعت زياديه !
يعني ابتدا پيكسل ها رو توي حافظه كارت گرافيك با سرعت بسيار بالا مي چينن بعد فقط كافيه كه صفحه يه Refresh بشه تا تمام اون پيكسل ها تغيير كنن . سرعت اين Refresh شدن به سرعت كارت گرافيك شما بستگي داره كه به اون ميگن Refreshing rate .
تكنيك هاي ديگير مثل بافر دوگانه و .... هم استفاده ميشه تا سرعت بسيار بالا بره مثلا در رابط هاي سريع بازي مثل Direct X از بافر دوگانه براي Render كردن سريع فريم ها استفاده ميشه
اين مبحث بسيار بزرگي هست و جاي بحث زياد داره و حتي زمينه هاي مختلف اون در پايان نامه هاي مقطع دكترا هم مطرح هست ! :idea:
ممد جان كارت خيلي درسته
من كه كيف مي كنم از توضيحاتت بسكه كامل و جامعه
راستي اين ها رو بيشتر ايران ياد گرفتي يا هند ؟
دوستان واقعا ما رو خجالت زده كردند :oops: :oops:
والا اين اطلاعات ناچيز رو من طي مطالعه هاي پراكنده كتابهاي مختلف و برخورد با اين بخش ها در ذهن داشتم ! همين . :roll:
خوشحالم كه مفيد واقع شد :wink:
نقل قول: دسترسي به سطح پايين : توابع موجود در GDI فقط از تكنيك اي كد نوسيس سطح بالا سود نمي برن بلكه بسياري از امور رو در سطح پايين و با حافظه مستقيم كارت گرافيك انجام ميدن كه داراي سرعت زياديه !
آقا Mamad2003 ممنون خيلى عالي بود واقا استفاده كرديم
اما سوالى دارم كه هنوز جوابش رو پيدا نكردم:
فرق GDI32 با GDI+ )plus) در چیه ؟
اخه چرا GDI+ قدرت و سرعت بالایی داره ؟
البته همین طور که گفتید ممکنه از الگوریتم های بهینه در اون استفاده شده باشه ... :!: :?: