Как сохранить растровое изображение в файл PNG, не вызывая ошибки - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу закодировать растровое изображение в формате PNG, а затем сохранить его в файл.Но мой heatmap_PictureBox_Bitmap.Save( filepathname ) .. вызывает ошибку:

В GDI + произошла общая ошибка.

heatmap_PictureBox_Bitmap содержит цветное изображение.

В моем приложении .NET для Windows 10 эта картинка отображается очень хорошо:

public const  MOBILE_UPLOADER_PATH = "C:\demo\DEMO4\MOBILE UPLOADER\"
public const XY_HEATMAP_PNG_FILENAME = "XY_HEATMAP.PNG"
public const  XY_HEATMAP_PNG_PATHNAME = MOBILE_UPLOADER_PATH     & XY_HEATMAP_PNG_FILENAME  

dim heatmap_PictureBox_Bitmap   as Bitmap
. . .

' Build the image bitmap:
for x = 0 to x_range
  for y = 0 to y_range
    ' red, green, blue are integers 0 to 255
    pixel_color = Color.FromArgb( red, green, blue )
    heatmap_PictureBox_Bitmap.SetPixel( x, y, pixel_color   )  
  next
next
. . .
PictureBox_heat_map.Image = heatmap_PictureBox_Bitmap  ' displays ok

Но добавление этой строки (ниже) приводит к ошибке «В GDI + произошла общая ошибка».

. . .
heatmap_PictureBox_Bitmap.Save( XY_HEATMAP_PNG_PATHNAME  ) <<<< CAUSES THE ERROR
PictureBox_heat_map.Image = heatmap_PictureBox_Bitmap

Мои предположения:
1. heatmap_PictureBox_Bitmap - это некодированные / сжатые данные изображения
2. bitmap.save( pathname ) кодируется как .PNG

Я также пытался

heatmap_PictureBox_Bitmap.Save(XY_HEATMAP_PNG_PATHNAME, System.Drawing.Imaging.ImageFormat.Png)

.. та же проблема.

Каталог в XY_HEATMAP_PNG_PATHNAME существует.

1 Ответ

0 голосов
/ 28 февраля 2019

Проблема заключалась в том, что папка назначения public const MOBILE_UPLOADER_PATH = "C: \ demo \ DEMO4 \ MOBILE UPLOADER \" ..не существовала.

Я предполагал, что она существует.

Я изменил код, чтобы создать папку, если она не существует.

...