Я пытаюсь отправить изображения на 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
Обновление 2: приведенный выше код работает, но мне нужно знать, как изменить несколько параметров по сравнению с одним. Я думаю, что, вероятно, это будет запуск в домашних условиях.
ОБНОВЛЕНИЕ 3: у меня работает несколько параметров, публикуя их здесь на случай, если это поможет кому-то еще. Теперь просто нужно подождать, пока клиент войдет и посмотреть, работает ли он для них!
Для ссылки здесь есть ссылка на документацию MS
https://docs.microsoft.com/en-us/dotnet/api/system.drawing.imaging.encoder.colordepth?view=netframework-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);