C # masaüstü uygulamasında bu görüntünün kırpılmış sürümüyle orijinal görüntünün üzerine nasıl yazılır

0

Soru

Dosyadan bir avatar resmi seçebileceğiniz ve daha sonra kırpabileceğiniz c # contact manager masaüstü uygulaması oluşturuyorum. Orijinal görüntü kırpıldıktan sonra orijinali değiştirilerek düzgün şekilde görüntülenir. Ancak, daha sonra hesabı kaydettirmeye çalıştıktan sonra görüntü Null olarak görüntülenir ve böyle bir hata görüntülenir:

Sistem.ArgumentNullException: "Değer null olamaz. (Parametre 'kodlayıcı')”

Kayıt sayfasına resim yükleme yöntemi:

        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);
            }
        }

Görüntüyü kırpma yöntemi:

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;
        }

İşte görüntüyü kaydederken hatanın oluştuğu satır:

MemoryStream picture = new MemoryStream();
pictureBoxProfileImage.Image.Save(picture, pictureBoxProfileImage.Image.RawFormat);

Orijinal görüntü aktarılıyorsa, kaydın düzgün çalıştığını belirtmek gerekir. Onları bir şekilde değiştirmeli miyim (orijinali kırpılmış olanla üzerine yazmalı mıyım)?

c# crop
2021-11-15 11:20:12
1

En iyi cevabı

1

Hata oluşur tahminimce nedeniyle pictureBoxProfileImage.Image.RawFormat. Yeni değiştirdin pictureBoxProfileImage.Image ama rawFormat ne yapar new Bitmap(...) var? Bununla ilgili herhangi bir belge bulamasam da, geçerli bir rawFormat olmadığını tahmin ediyorum.

Bu yüzden ya onu şöyle bir şeyle değiştirmeye çalışırdım ImageFormat.Png veya kaydederken kullanılacak özgün bit eşlem rawFormat kaydedin.

2021-11-15 13:51:04

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................