я имею небольшой вопрос о преобразовании различных типов тьфу/изображений в формате TIFF. Мы используем Atalasoft, стороннее программное обеспечение, которое обрабатывает наши документы и изображения в отношении сканирования и просмотра.Преобразование PDF/JPEG в формате TIFF с использованием Atalasoft & C#
Проблемы я столкнулся в том, что я получаю исключение довода в методе TiffDocument(). Он проходит в поток в этот метод. В аргументе Argument Exception указано, что файл не находится в формате TIFF. Это понятно, когда я передаю PDF или JPEG.
Я попробовал многочисленные попытки пытается преобразовать их, но безуспешно. В любое время, когда я пытаюсь преобразовать jpeg в tiff, возникает проблема, потому что изображение является AtalaImage, а не System.Drawing.Image.
Для преобразования JPEG я угнал этот код из раздела комментариев here.
public static Image ConvertToJpeg(string fileName)
{
Image retVal = null;
using (FileStream fs = File.OpenRead(fileName))
{
retVal = ConvertToJpeg(fs);
fs.Close();
}
return retVal;
}
/// <summary>
/// Converts the specified image into a JPEG format
/// </summary>
/// <param name="imgStream">The stream of the image to convert</param>
/// <returns>An Image with JPEG data if successful; otherwise null</returns>
public static Image ConvertToJpeg(Stream imgStream)
{
Image retVal = null;
Stream retStream = new MemoryStream();
using (Image img = Image.FromStream(imgStream, true, true))
{
img.Save(retStream, ImageFormat.Jpeg);
retStream.Flush();
}
retVal = Image.FromStream(retStream, true, true);
return retVal;
}
}
}
Кроме того, Atalasoft имеет небольшую инструкцию в отношении конвертации PDF в TIFF, но ArgumentException выбрасывается в методе Save (Сообщение об ошибке: ошибка в ошибке кодека TIFF записи в формате TIFF потока). Приведенный ниже код такой же, как код в ссылке:
TiffEncoder noAppend = new TiffEncoder(TiffCompression.Default, true);
PdfDecoder pdf = new PdfDecoder();
for(int i=0; i< numPages; i++)
{
AtalaImage img = pdf.Read(inStream, i, null);
noAppend.Save(outStream, img, null);
img.Dispose();
outStream.Seek(0, SeekOrigin.Begin);
}
EDIT: Приведенный выше код работает и успешно преобразует PDF в TIFF.
Кроме того, мне нужно знать, в каком формате находится этот файл, чтобы он мог быть отправлен на соответствующий метод для преобразования. Я пробовал использовать код от this question, но безрезультатно.
Ниже приведен фрагмент того, где происходит волшебство. Существует функция, которая вызывает это, но эта функция устанавливает изображение в WebImageViewer.Image переменной и вызывает метод ниже:
private void Foo(AtalaImage image)
{
/*I have tried converting here, before the file stream, and after the
filestream. */
var url = wiv.ImageUrl;
var path = Page.MapPath(url);
var frame = wiv.CurrentPage - 1;
Stream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
var doc = new TiffDocument(fs); //This is where the error occurs.
var page = new TiffPage(image);
doc.Pages[frame] = page;
doc.Save(path + "_tmp");
fs.Close();
File.Delete(path);
File.Move(path + "_tmp", path);
wtv.OpenUrl(url);
wtv.SelectedIndex = frame;
wiv.OpenUrl(url, frame);
}
Любая помощь или мыслительные процессы будут весьма благодарны.