我使用此代碼加載圖像:如何將圖像保存爲C#中的8位?
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "Select a Picture";
ofd.InitialDirectory = @"PATH";
if (ofd.ShowDialog() == DialogResult.OK)
{
HostImageLocationTxt.Text = ofd.FileName;
hostImage.Image = new Bitmap(ofd.FileName);
}
然後,我在另一個「PictureBox的」加載圖像,並使用此代碼保存圖像沒有任何修飾:
if (transformedImage.Image != null)
{
Bitmap bmp = new Bitmap(transformedImage.Image);
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "Select Save Location";
sfd.InitialDirectory = @"PATH";
sfd.AddExtension = true;
if (sfd.ShowDialog() == DialogResult.OK)
{
switch (Path.GetExtension(sfd.FileName).ToUpper())
{
case ".BMP":
bmp.Save(sfd.FileName, ImageFormat.Bmp);
break;
case ".gif":
bmp.Save(sfd.FileName, ImageFormat.Gif);
break;
case ".JPG":
bmp.Save(sfd.FileName, ImageFormat.Jpeg);
break;
case ".JPEG":
bmp.Save(sfd.FileName,ImageFormat.Jpeg);
break;
case ".PNG":
bmp.Save(sfd.FileName, ImageFormat.Png);
break;
case ".png":
bmp.Save(sfd.FileName, ImageFormat.Png);
break;
default:
break;
}
}
}
保存的圖像結果中不同的位深度(左:第一個加載圖像,右:已保存的圖像):
如何使用它在第一個加載的相同格式進行保存?謝謝。
您打電話給'ToUpper',但是您有兩種情況的標籤......?此外,你泄漏多個對象。你應該在'using'語句中包裝這些對象(OpenFIleDialog,Bitmap等)的創建。 –
8bpp圖像的日期來自石器時代,當您必須在386SUX機器上以640 KB的RAM運行Windows時。這些天你的桌面背景圖像本身需要比整個Windows 3安裝更多的空間;)由於它們需要調色板,所以它們非常尷尬,System.Drawing支持它們的效果很差。大部分你對圖像做的任何事情,比如用Bitmap構造函數創建一個副本,都會使它變成現代的形狀。不要修復它,它不再是1990年。 –