Estoy edificio c# póngase en contacto con el administrador de la aplicación de escritorio donde se puede elegir una imagen de avatar de el archivo y luego recortar. La imagen original se muestra correctamente después de la cosecha, en sustitución de la original. Sin embargo, más tarde, al intentar registrar la cuenta de que la imagen parece ser Nula con un error que se muestra:
Sistema.ArgumentNullException: "el Valor no puede ser nulo. (Parámetro 'encoder')"
El método para cargar una imagen a la página de registro:
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);
}
}
El método de recorte de la imagen:
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;
}
Esta es la línea donde se produce el error al guardar la imagen:
MemoryStream picture = new MemoryStream();
pictureBoxProfileImage.Image.Save(picture, pictureBoxProfileImage.Image.RawFormat);
Vale la pena mencionar que el registro funcione correctamente si la imagen original es que se pasa. Debo reemplazar con ellos de alguna manera (sobrescribir el original con la recortada uno)?