Использование .NET C# для преобразования изображения из jpg в определенный формат TIFF.C#

Место общения программистов C#
Ответить
Anonymous
 Использование .NET C# для преобразования изображения из jpg в определенный формат TIFF.

Сообщение Anonymous »

Я пытаюсь отправить изображения на AS-400, и он принимает только изображения TIFF.
Я конвертирую их, но затем он жалуется, что
Ошибка жалуется на «нераспознанные теги tiff...», первые два — 317 и 531.
Также: «Для кодов ошибок X'8F0E' и X'8F0F' обнаружен битовый шаблон, который не соответствует в соответствии с правилами алгоритма распаковки. Дальнейшая распаковка невозможна. Проверьте целостность входных данных
потока и повторите запрос."
У меня есть работающий tiff-файл, вот его подробности:
Изображение

Я использую код из MSDN, который я изменил.
Приведенный ниже код работает, но теперь мне нужно иметь более одного параметра в кодировщике.
Bitmap myBitmap;
ImageCodecInfo myImageCodecInfo;
Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;

// Create a Bitmap object based on a BMP file.
myBitmap = new Bitmap(@"f:\testFromBlob.jpg");
// Get an ImageCodecInfo object that represents the TIFF codec.
myImageCodecInfo = GetEncoderInfo("image/tiff");
//do the actual work
myEncoder = Encoder.Compression;
myEncoderParameters = new EncoderParameters(1);
myEncoderParameter = new EncoderParameter(myEncoder, long) EncoderValue.CompressionCCITT4);
myEncoderParameters.Param[0] = myEncoderParameter;
myBitmap.Save(@"f:\resultFromDotNet.tiff", myImageCodecInfo, myEncoderParameters);

private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}

Я не разбираюсь в файлах изображений.
Может ли кто-нибудь сказать мне, как выполнить преобразование, соответствующее настройкам моего тестового изображения?
Я пробовал изменить битовую глубину на 1, а также сжатие, не уверен, но думаю, что, возможно, потребуется изменить и то, и другое.
ОБНОВЛЕНИЕ - с помощью Magick я могу преобразовать в рабочий формат, используя

magick Convert image01.jpg -compress Group4 tiff3.tiff

Если это вообще поможет мне на правильном пути для C#/.NET
Приведенный выше код работает, но мне нужно знать, как изменить несколько параметров, а не только один. Я думаю, что это, вероятно, будет удачным ходом.
У меня есть несколько рабочих параметров, публикую их здесь на случай, если это поможет кому-то еще. Теперь просто нужно подождать, пока зайдет клиент, и посмотреть, сработает ли это для него!
Для справки вот ссылка на документацию MS
https://learn.microsoft.com/en-us/dotne ... mework-4.8
Bitmap myBitmap;
ImageCodecInfo myImageCodecInfo;
Encoder compressionEncoder;
Encoder colorDepthEncoder;
EncoderParameter compressionParameter;
EncoderParameter colorDepthParameter;
EncoderParameters myEncoderParameters;

// Create a Bitmap object based on a BMP file.
myBitmap = new Bitmap(@"f:\colorTest.jpg");

// Get an ImageCodecInfo object that represents the TIFF codec.
myImageCodecInfo = GetEncoderInfo("image/tiff");
//do the actual work
compressionEncoder = Encoder.Compression;
myEncoderParameters = new EncoderParameters(2);
compressionParameter = new EncoderParameter(compressionEncoder,(long)EncoderValue.CompressionCCITT4);

colorDepthEncoder = Encoder.ColorDepth;
colorDepthParameter = new EncoderParameter(colorDepthEncoder, 24L); //if needed this can be removed

myEncoderParameters.Param[0] = compressionParameter;
myEncoderParameters.Param[1] = colorDepthParameter;
myBitmap.Save(@"f:\resultFromDotNet1bit.tiff", myImageCodecInfo, myEncoderParameters);
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»