1
일부 TIFF 파일 세트 (8 비트 팔레트)가 있습니다. 비트 깊이를 32 비트로 변경해야합니다. 아래 코드를 시도했지만 오류가 발생하여 매개 변수가 올바르지 않습니다 ... 해결하도록 도와 주시겠습니까? 아니면 some1 내 문제에 대한 다른 해결책을 제안 할 수 있습니다.8 비트에서 32 비트로 TIFF 팔레트 변경
public static class TiffConverter
{
public static void Convert8To32Bit(string fileName)
{
BitmapSource bitmapSource;
using (Stream imageStreamSource = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
TiffBitmapDecoder decoder = new TiffBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
bitmapSource = decoder.Frames[0];
}
using (FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate))
{
ImageCodecInfo tiffCodec = ImageCodecInfo.GetImageEncoders().FirstOrDefault(codec => codec.FormatID.Equals(ImageFormat.Tiff.Guid));
if (tiffCodec != null)
{
Image image = BitmapFromSource(bitmapSource);
EncoderParameters parameters = new EncoderParameters();
parameters.Param[0] = new EncoderParameter(Encoder.ColorDepth, 32);
image.Save(stream, tiffCodec, parameters);
}
}
}
private static Bitmap BitmapFromSource(BitmapSource bitmapSource)
{
Bitmap bitmap;
using (MemoryStream outStream = new MemoryStream())
{
BitmapEncoder enc = new BmpBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(bitmapSource));
enc.Save(outStream);
bitmap = new Bitmap(outStream);
}
return bitmap;
}
}
미리 감사드립니다.
image.Save(stream, tiffCodec, parameters);
ArgumentException occured: Parameter is not valid.
Nope, cuz 다음과 같이 사용하여 만들었습니다. 'Using Encoder = System.Drawing.Imaging.Encoder; ' – Nickon
그러면 오류는 어디에 있습니까? –
젠장, 내 잘못이야. 'image.Save (stream, tiffCodec, parameters);'와 같은 매개 변수에 문제가 있습니다. 그러나 여전히 이유를 모르겠습니다 ... – Nickon