PDA

View Full Version : آموزش: برگرداندن یا به عبارتی معکوس کردن رنگ های یک تصویر



ROSTAM2
پنج شنبه 13 مرداد 1401, 17:10 عصر
سلام.
اینجا یک تابعی داریم که قادر هست رنگ های یک تصویر رو برگردونه یا به عبارتی معکوس (Invert) کنه.

حالا چرا InvertColor و کارائیش چیه؟!
زمانی هست می خوایم از یک یا چند تصویر پرینت داشته باشیم ولی رنگ پس زمینه تصویر سیاه یا تاریک هستش و فقط متن اون تصویر روشن هست. اگه بخوایم تو همین حالت از تصویر پرینت بگیریم برای چاپ لازمه که دستگاه چاپگر اگر لیزری هست پودر زیادی مصرف کنه و اگه دستگاه سوزنی هست که فاجعه است.
برای همین هم این کد یا دستور کمک می کنه به راحتی رنگ تصویر رو معکوس کنیم و ی چاپ درست و حسابی با پس زمینه روشن داشته باشیم که متن هم واضح و خوانا خواهد بود.
این امکان بیشتر برای تصاویری که از گوشیهای موبایل فرستاده می شه و از پیام رسان که پس زمینه رو تاریک یا حالت شب گذاشتند گرفته شده کاربرد داره.
این دستور رو با یک ایده تبدیل کردمش به یک دستور در رجیستری و در منوی راست کلیک برای تصاویر کاربرد داره که تنها با دو کلیک می شه رنگ تصویر رو معکوس کرد.

تابع معکوس کردن رنگ های تصویر:

Shared Function InvertColors(filepath As String) As Image
Dim Img As Bitmap = Image.FromFile(filepath)
For y = 0 To Img.Height - 1
For x = 0 To Img.Width - 1
Img.SetPixel(x, y, Color.FromArgb(-Img.GetPixel(x, y).GetHashCode))
Next
Next
Return Img
End Function


این تابع و توابع دیگه توی یک کلاس ایجاد شدند برای همین هم Shared تعریف شده، اگه می خواید توی ماجول داشته باشید کلمه Shared رو حذف کنید.

mmbguide
یک شنبه 16 مرداد 1401, 10:11 صبح
سلام

یه نگاهی به مطلب زیر بندازید:
https://stackoverflow.com/questions/33024881/invert-image-faster-in-c-sharp