Как объединить массив изображений PNG, как слои, используя C #? - PullRequest
2 голосов
/ 25 июля 2011

У меня есть массив изображений с именем

image_<somenumber>_trans.png

Все эти изображения имеют прозрачные области.Идея состоит в том, что, когда они помещаются друг на друга, они образуют красивое изображение.Но я получаю странную ошибку, связанную с GDI + («Общая ошибка произошла в GDI +»), и я сходила с ума.Код, который я использую сейчас, можно посмотреть ниже:

number_of_photos = 30;
Bitmap temp = new Bitmap("background.png");//some white background 640x480 pixels
temp.Save("temp.png", ImageFormat.Png);
temp.Dispose();
for (int photo_no = 0; photo_no < number_of_photos; photo_no++)
{
    Bitmap temp1 = new Bitmap("temp.png");
    Graphics gra = Graphics.FromImage(temp1);
    Bitmap new_layer = new Bitmap("image_" + photo_no + "_trans.png");
    //the images image_<photo_no>_trans.png are also 640x480 pixels
    gra.DrawImage(new_layer,0,0);
    temp1.Save("temp.png");//error: A generic error occurred in GDI+.
    temp1.Dispose();
 }

Я что-то не так делаю?Заранее благодарю за помощь ...

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Я предлагаю сохранить изображение только после завершения всего процесса.

Image i = new Image(...)
Graphics g = Graphics.FromImage(i)
for(...)
{
    g.Draw(...)
}

i.Save(...)
1 голос
/ 25 июля 2011

Запись new Bitmap(filename) заблокирует файл, пока вы не утилизируете Bitmap.
Следовательно, вы не можете перезаписать файл.

...