PDA

View Full Version : سیاه و سفید کردن تصویر در پیکچر باکس یا ایمیج باکس vb6



honarestani
سه شنبه 20 تیر 1391, 20:06 عصر
سلام.
آیا میشه برنامه ای رو دستکاری کرد تا پیکسل ها فقط سیاه مطلق یا سفید مطلق بشن ؟ یعنی انواع خاکستری نباشه ؟
اگه هم باید خاکستری تبدیل به سفید شه یا سیاه بهتره به سیاه تبدیل شه
اگه میشه راهنمایی کنید یا بنویسید ممنون

یعنی اگه فایل اصلی این باشه
http://dlhome.persiangig.com/citron.jpg
تبدیل بشه به یه همچین چیزی (بدون رنگ خاکستری)
http://dlhome.persiangig.com/citron2.jpg
فکر کنم توضیحاتم کامل بود دیگه ؟

البته توی تایپیک های مشابه سرزدم ولی سیاهو سفید رو پیدا نکردم خاکستری هم توش بود

دقیقا یعنی : روی یک تصویر کلیک راست کنیم و در paint بازش کنیم و از گزینه ی save as گزینه ی monochrome bitmap رو انتخاب کنیم

the king
سه شنبه 20 تیر 1391, 22:35 عصر
با Point و PSet نوشتم، کد ساده تره اما کند اجرا میشه. اگه با GetDIBits و SetDIBits بنویسیم به مراتب سریعتر میشه.

Private Sub Command1_Click()
Dim i As Integer, j As Integer, c As Long
Dim k As Integer, r As Integer, g As Integer, b As Integer
With Picture1
.ScaleMode = vbPixels
.AutoRedraw = True
For i = 0 To .ScaleWidth - 1
For j = 0 To .ScaleHeight - 1
c = .Point(i, j)
r = c And &HFF&
g = (c And &HFF00&) \ &H100&
b = (c And &HFF0000) \ &H10000
k = (r + g + b) \ 3
Picture1.PSet (i, j), RGB(k, k, k)
Next
Next
End With
End Sub

Private Sub Command2_Click()
Dim i As Integer, j As Integer, c As Long
Dim k As Integer, r As Integer, g As Integer, b As Integer
With Picture1
.ScaleMode = vbPixels
.AutoRedraw = True
For i = 0 To .ScaleWidth - 1
For j = 0 To .ScaleHeight - 1
c = .Point(i, j)
r = c And &HFF&
g = (c And &HFF00&) \ &H100&
b = (c And &HFF0000) \ &H10000
k = (r + g + b) \ 3
Picture1.PSet (i, j), IIf(k < 128, vbBlack, vbWhite)
Next
Next
End With
End Sub

سید حمید حق پرست
سه شنبه 20 تیر 1391, 23:43 عصر
سلام علیکم
با دستکاری ناچیز در کد بالا برنامه ای که همون چیزی رو که میخوای در یه سورس به صورت کامل قرار میدهم که دانلود کنید

موفق باشید


یا علی (ع)