Возможно, я плохо формулирую этот вопрос, но я стараюсь следовать документации библиотеки ImageMagick.net, и у меня есть программа, которая генерирует текст на основе ввода пользователем.Исключение создания и сохранения изображения несколько раз с помощью ImageMagick.net
Он отлично работает в первый раз, но программа вылетает в следующий раз, пока она все еще работает.
Если я уйду и перезапустите, он перезапишет предыдущий файл, который есть без заминки.
using (MagickImageCollection images = new MagickImageCollection())
{
MagickReadSettings readSettings = new MagickReadSettings()
{
BackgroundColor = MagickColors.None, // -background none
FillColor = MagickColors.Black, // -fill black
Font = "Helvetica-Condensed-Light", // -font Helvetica-Condensed-Light
FontPointsize = 26 // -pointsize 26
};
// this being declared a second time is probably why it crashes.
MagickImage image = new MagickImage("label:" + output, readSettings);
image.RemoveAttribute("label"); // +set label
images.Add(image);
MontageSettings montageSettings = new MontageSettings()
{
BackgroundColor = MagickColors.None, // -background none
Shadow = true, // -shadow
Geometry = new MagickGeometry(5, 5, 0, 0) // -geometry +5+5
};
using (MagickImage result = images.Montage(montageSettings))
{
result.Write("blarg.png");
}
}
поскольку действие вышеупомянутой функции находится в обработчике кнопки события, таким образом, если нажат во второй раз, он будет объявлен во второй раз, но я все еще относительно новый для C#, а также и не уверен в способ переписать это правильно, так как я адаптирую его из своей документации.
Ошибка:
Exception thrown: 'ImageMagick.MagickCoderErrorException' in Magick.NET-Q8-x64.dll
Exception type ImageMagick.MagickCoderErrorException
Exception message: WriteBlob Failed `blarg.png' @ error/png.c/MagickPNGErrorHandler/1650
Stack trace: at ImageMagick.MagickExceptionHelper.Check(IntPtr exception)
at ImageMagick.MagickImage.NativeMagickImage.WriteFile(MagickSettings settings)
at phVer.frmMain.btnGenerate_Click(Object sender, EventArgs e) in C:\Users\jweinraub\documents\visual studio 2015\Projects\phVer\phVer\Form1.cs:line 83
---BEGIN InnerException---
Exception type ImageMagick.MagickBlobErrorException
Exception message: unable to open image 'blarg.png': Permission denied @ error/blob.c/OpenBlob/2695
Stack trace:
---END Inner Exception
Update: кажется актуальная проблема, у меня есть окно предварительного просмотра, которая содержит фоновое изображение изображения, которое будет сохранено. Последующие прогоны рушится. Удаление области предварительного просмотра позволяет записывать файл много раз, но неуверенность в том, что область предварительного просмотра имеет проблему (ее панель управления с контролем фонового изображения). Я пробовал установку нулевого/распоряжения/& c безрезультатно.
/* Preview.BackgroundImage = Image.FromFile("blarg.png"); */
if (Preview.BackgroundImage != null)
{
Preview.BackgroundImage.Dispose();
Preview.BackgroundImage = null;
Preview.Dispose();
}
var image2 = (Bitmap)Image.FromFile("blarg.png", true);
Preview.BackgroundImage = image2;
Какая ошибка возникает у вас? – SLaks
из любопытства, все равно сбой, если вы используете (результат MagickImage = новый MagickImage («blarg.png»)) вместо монтажа? –
ошибка добавлен в оригинале вопрос. –