ورود

View Full Version : سوال: کد برای Levels برای تنظیم سایه های روشن بیت مپ



mbshareat
جمعه 04 مرداد 1398, 10:42 صبح
سلام
در فتو شاپ، در منوی Image\Adjustments\levels میشه سایه روشن رو به تیره تبدیل کرد.
من با تصویر متن کتاب سر و کار دارم.که معمولا از رنگهای سفید و سیاه و خاکستری استفاده می کنه.
میخوام نقاط خاکستری کم رنگ و پر رنگ رو به سیاه(یا کمی پر رنگ تر=مایل به صفر) تبدیل کنم که تصویر رنگ پریده، پر رنگ و خوانا تر باشه.
کسی کدی سراغ داره؟
جستجو کردم چیزی پیدا نکردم.شاید مجبور بشم خودم کدش رو بنویسم.
اگر راه دیگه ای هم به نظرتون رسید لطفا بفرمایید.(تصویر زیر رو در اندازه اصلی ملاحظه بفرمایید)
150516

یوسف زالی
جمعه 04 مرداد 1398, 13:26 عصر
سلام.
تصویرت کوچیکه برادر،
می تونی با یه اسکن از عکس رنگ میانه رو در بیاری و اگه رنگ تیره تر از اون بود سیاه در نظرش بگیری

mbshareat
جمعه 04 مرداد 1398, 22:49 عصر
به نظرم بهتره تصویر دور نگ نشه.
چنین کدی نوشتم(قبلا برای حذف خاکستری هم کد نوشته بودم.بنابر این سفید کردن مابقی نقاط رو کار نداشتم):

Type
TRGBArray = ARRAY[0..32767] OF TRGBTriple;
pRGBArray = ^TRGBArray;


procedure AdjustGray(var Bmp:TBitmap;N:Byte);//0<N<6
var
P : pRGBArray; // Scanlines
X,Y:Word;
begin
For Y:=0 to Bmp.Height-1 do
Begin
P:=Bmp.ScanLine[Y];
For X:=0 to Bmp.Width-1 do
if P[X].rgbtBlue<200 then
Begin
P[X].rgbtRed:=P[X].rgbtRed-(P[X].rgbtRed*N div 5);
P[X].rgbtGreen:=P[X].rgbtGreen-(P[X].rgbtGreen*N div 5);
P[X].rgbtBlue:=P[X].rgbtBlue-(P[X].rgbtBlue*N div 5);
End;
End;
end;