0

Lossy JPEG (34892)圧縮 (DNG 1.4.0.0 で導入された)を使用して、JPG に基づいてリニア DNG ファイルを作成しようとしています。以下の方法を実行した後、dng_validate.exe から「エラー: ファイル形式が無効です (JPEG のサイズがタイルと一致しません)」というエラーが表示されました。

誰かが私のコードを調整して解決できるといいですね。また、チュートリアルのリンクも喜んで提供します。画像ツール (magick、dcraw、exiftool) を使用することも解決策になる可能性があります。

public static void LinearRawDng()
        {
            string file = "eva.jpg";
            using (Tiff tif = Tiff.Open("eva-linear.dng", "w"))
            {
                Image img = Image.FromFile(file);
                byte[] raster;
                using (MemoryStream ms = new MemoryStream())
                {
                    img.Save(ms, ImageFormat.Jpeg);
                    raster = ms.ToArray();
                }

                tif.SetField(TiffTag.MAKE, "Fitler");
                tif.SetField(TiffTag.UNIQUECAMERAMODEL, "Fitler");
                tif.SetField(TiffTag.DNGVERSION, "\x1\x4\x0\x0");
                tif.SetField(TiffTag.DNGBACKWARDVERSION, "\x1\x4\x0\x0");

                tif.SetField(TiffTag.SUBFILETYPE, 0);
                tif.SetField(TiffTag.PHOTOMETRIC, 34892);
                tif.SetField(TiffTag.COMPRESSION, 34892);
                tif.SetField(TiffTag.SAMPLESPERPIXEL, 1);
                tif.SetField(TiffTag.BITSPERSAMPLE, 8);
                tif.SetField(TiffTag.ORIENTATION, Orientation.TOPLEFT);
                tif.SetField(TiffTag.PLANARCONFIG, PlanarConfig.CONTIG);
                tif.SetField(TiffTag.IMAGEWIDTH, img.Width);
                tif.SetField(TiffTag.IMAGELENGTH, img.Height);


                var result = tif.WriteRawStrip(0, raster, raster.Length);               
                tif.Close();
                Console.WriteLine("Finished");
            }
        }
4

0 に答える 0