Я пытаюсь преобразовать все png в папку в 8bpp png с помощью nQuant. Я попытался использовать следующий код:Чтение и запись на том же FileStream
foreach (string file in Directory.GetFiles(tempFolderPath, "*.png", SearchOption.TopDirectoryOnly))
{
using (MemoryStream memory = new MemoryStream())
{
using (FileStream fs = new FileStream(file, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
using (Bitmap image = new Bitmap(fs))
{
using (Image quantized = quantizer.QuantizeImage(image))
{
quantized.Save(memory, ImageFormat.Png);
byte[] bytes = memory.ToArray();
fs.Write(bytes, 0, bytes.Length);
}
}
}
}
}
Это, однако, не работает. Без исключений. Просто не записывается в файл. Я заменил его на этот рабочий код.
Bitmap image;
foreach (string file in Directory.GetFiles(tempFolderPath, "*.png", SearchOption.TopDirectoryOnly))
{
using (FileStream fso = new FileStream(file, FileMode.Open, FileAccess.ReadWrite))
{
image = new Bitmap(fso);
}
using (MemoryStream memory = new MemoryStream())
{
using (FileStream fs = new FileStream(file, FileMode.Create, FileAccess.ReadWrite))
{
using (Image quantized = quantizer.QuantizeImage(image))
{
quantized.Save(memory, ImageFormat.Png);
byte[] bytes = memory.ToArray();
fs.Write(bytes, 0, bytes.Length);
}
}
}
}
Похоже FileMode.OpenOrCreate
может сделать один или другой, но не оба.
Есть ли все равно, чтобы читать и писать на одном FileStream
?
выполните быстрый поиск по следующему 'C# Stackoverflow чтению и записи в тот же FileStream' – MethodMan
@MethodMan Да, я нашел [это] (http://stackoverflow.com/questions/605685/how-to-bothread -and-write-a-file-in-c-sharp), и я использовал верхний ответ. Я также нашел [this] (http://stackoverflow.com/questions/33633344/read-and-write-to-a-file-in-the-same-stream) и попытался добавить fs.Flush(), но это также не работает. – I23BigC