منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
لتحويل صورة ملونة إلى مستوى الرمادي باستخدام مصفوفة التحويل - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90)
+--- قسم : مكتبة أكواد المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=111)
+---- قسم : مكتبة أكواد .net (http://vb4arb.com/vb/forumdisplay.php?fid=117)
+---- الموضوع : لتحويل صورة ملونة إلى مستوى الرمادي باستخدام مصفوفة التحويل (/showthread.php?tid=6244)



لتحويل صورة ملونة إلى مستوى الرمادي باستخدام مصفوفة التحويل - RaggiTech - 17-10-12

كاتب الموضوع : Boutemine Oualid

بسم الله الرحمن الرحيم

هذه الشفرة وجدتها في المنتدى و أحببت أن أضعها



كود :
Public Class frmMain
Private Sub btnOpenColorImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenColorImage.Click
Dim OpenFileDialog As OpenFileDialog = New OpenFileDialog()
Dim imagFilter As String = "Fichiers d'images (*.jpg,*.jpeg,*.bmp,*.gif,*.png)|*.BMP;*.PNG;*.JPG;*.JPEG;*.GIF"
OpenFileDialog.Filter = imagFilter
OpenFileDialog.RestoreDirectory = True
If OpenFileDialog.ShowDialog() = DialogResult.OK Then
Dim img As Image = Image.FromFile(OpenFileDialog.FileName)
pbxColoredImage.Image = img.GetThumbnailImage(pbxColoredImage.Width, pbxColoredImage.Height, Nothing, Nothing)
End If
End Sub
Private Sub btnConvertToGray_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvertToGray.Click
If pbxColoredImage.Image Is Nothing Then
Dim msgString As String = "Veuillez ouvrir un fichier d'image d'abord svp"
Dim msgCaption As String = "Erreur"
MessageBox.Show(msgString, msgCaption, MessageBoxButtons.OK, MessageBoxIcon.Warning)
Else
Dim grayImage As Image = pbxColoredImage.Image
Dim bm As Bitmap = New Bitmap(grayImage.Width, grayImage.Height)
Dim g As Graphics = Graphics.FromImage(bm)
'Creation de la matrice contenant les poids de conversion
'0.3 -> Poid du constituant R (Rouge)de la couleur des pixels
'0.59 -> Poid du constituant G (Vert)
'0.11 -> Poid du constituant B (Bleu)
Dim cm As System.Drawing.Imaging.ColorMatrix = New System.Drawing.Imaging.ColorMatrix(New Single()() _
{New Single() {0.3, 0.3, 0.3, 0, 0}, _
New Single() {0.59, 0.59, 0.59, 0, 0}, _
New Single() {0.11, 0.11, 0.11, 0, 0}, _
New Single() {0, 0, 0, 1, 0}, _
New Single() {0, 0, 0, 0, 1}})
Dim ia As System.Drawing.Imaging.ImageAttributes = New System.Drawing.Imaging.ImageAttributes()
ia.SetColorMatrix(cm)
g.DrawImage(grayImage, New Rectangle(0, 0, grayImage.Width, _
grayImage.Height), 0, 0, grayImage.Width, _
grayImage.Height, GraphicsUnit.Pixel, ia)
g.Dispose()
pbxGrayScaleImage.Image = bm.GetThumbnailImage(pbxGrayScaleImage.Width, pbxGrayScaleImage.Height, Nothing, Nothing)
End If
End Sub
Private Sub btnSaveGrayImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveGrayImage.Click
Dim SaveFileDialog As New SaveFileDialog()
SaveFileDialog.Filter = "Fichiers d'images (*.BMP, *.JPG, *.GIF)|*.bmp;*.jpg;*.gif"
If SaveFileDialog.ShowDialog() = DialogResult.OK Then
If Not pbxColoredImage.Image Is Nothing Then
pbxGrayScaleImage.Image.Save(SaveFileDialog.FileName)
End If
End If
End Sub
End Class