Je suis bâtiment c# gestionnaire de contacts de l'application de bureau où vous pouvez choisir un avatar image à partir du fichier et, plus tard, de la recadrer. L'image d'origine s'affiche correctement après le recadrage, en remplacement de celui d'origine. Cependant, plus tard, lors de la tentative pour enregistrer le compte de l'image semble être Null avec une telle erreur affiché:
Système.ArgumentNullException: "la Valeur ne peut pas être null. (Paramètre 'codeur')”
La méthode pour l'upload d'une image de la page du registre:
private void button_browse_Click(object sender, EventArgs e)
{
// select and display image in the picturebox
OpenFileDialog opf = new OpenFileDialog();
opf.Filter = "Select Image(*.jpg;*.png;*.gif)|*.jpg;*.png;*.gif";
if(opf.ShowDialog() == DialogResult.OK)
{
pictureBoxProfileImage.Image = Image.FromFile(opf.FileName);
setImage(pictureBoxProfileImage.Image);
}
}
La méthode pour le recadrage de l'image:
private void button_Select_Cropped_Area_Click(object sender, EventArgs e)
{
Cursor = Cursors.Default;
Bitmap bitmap2 = new Bitmap(pictureBoxProfileImage.Width, pictureBoxProfileImage.Height);
pictureBoxProfileImage.DrawToBitmap(bitmap2, pictureBoxProfileImage.ClientRectangle);
Bitmap croppedImage = new Bitmap(rectW, rectH);
for (int x = 0; x < rectW; x++)
{
for (int y = 0; y < rectH; y++)
{
Color pxlColor = bitmap2.GetPixel(cropX + x, cropY + y);
croppedImage.SetPixel(x, y, pxlColor);
}
}
pictureBoxProfileImage.Image.Dispose();
pictureBoxProfileImage.Image = (Image)croppedImage;
pictureBoxProfileImage.SizeMode = PictureBoxSizeMode.StretchImage;
}
Voici la ligne où l'erreur se produit lors de l'enregistrement de l'image:
MemoryStream picture = new MemoryStream();
pictureBoxProfileImage.Image.Save(picture, pictureBoxProfileImage.Image.RawFormat);
Il est intéressant de mentionner que le registre fonctionne correctement si l'image originale est en cours de transmission. Dois-je les remplacer en quelque sorte (remplacer celui d'origine avec le recadrée une)?