libtiff.net icon indicating copy to clipboard operation
libtiff.net copied to clipboard

how to use libtiff.net to generate a tiff or svs support by openslide

Open sommour opened this issue 2 years ago • 1 comments

Hello, I try to use libtiff.net to generate a tiff that can be opened by openslide. but I try long time , failed! my code is: `for (int k_j = 0; k_j< 3; k_j++) { int j = k_j * 1; imageSplice.SetField(TiffTag.SUBFILETYPE, FileType.REDUCEDIMAGE); imageSplice.SetField(TiffTag.IMAGEWIDTH, width / beishu); imageSplice.SetField(TiffTag.IMAGELENGTH, height / beishu); imageSplice.SetField(TiffTag.BITSPERSAMPLE, 8); imageSplice.SetField(TiffTag.COMPRESSION, Compression.JPEG); imageSplice.SetField(TiffTag.PHOTOMETRIC, Photometric.RGB); imageSplice.SetField(TiffTag.IMAGEDESCRIPTION, "Aperio Image Format"); imageSplice.SetField(TiffTag.SAMPLESPERPIXEL, 3); imageSplice.SetField(TiffTag.PLANARCONFIG, PlanarConfig.CONTIG); imageSplice.SetField(TiffTag.TILEWIDTH, SmallImageSize); imageSplice.SetField(TiffTag.TILELENGTH, SmallImageSize); imageSplice.SetField(TiffTag.XRESOLUTION, 10); imageSplice.SetField(TiffTag.YRESOLUTION, 10); imageSplice.SetField(TiffTag.ORIENTATION, BitMiracle.LibTiff.Classic.Orientation.TOPLEFT); imageSplice.SetField(TiffTag.FILLORDER, FillOrder.MSB2LSB); imageSplice.SetDirectory((short)(k_j + 1));

                byte[][] m_TileByte = new byte[TileWidth / beishu][];
                for (int k = 0; k<m_TileByte.Length; k++)
                {
                    m_TileByte[k] = new byte[SmallImageSize * SmallImageSize * 3];
                }
               Mat temp_mat = new Mat();
                for (int k = 0; k<TileHeight / beishu; k++)
                {
                    for (int n = 0; n<TileWidth / beishu; n++)
                    {
                        temp_mat = new Mat(file_list[i] + @"\slide_files\" + (max_level - j).ToString() + @"\" + n.ToString() + "_" + k.ToString() + ".jpg", ImreadModes.AnyColor);
                        CvInvoke.CvtColor(temp_mat, temp_mat, ColorConversion.Bgr2Rgb);
                        Marshal.Copy(temp_mat.DataPointer, m_TileByte[n], 0, m_TileByte[n].Length);
                    }
                    imageSplice.WriteMultiEncodedTile(k* TileWidth / beishu, TileWidth / beishu, m_TileByte, 0, SmallImageSize* SmallImageSize * 3);
                }
                temp_mat.Dispose();
                imageSplice.WriteDirectory();
            }
           

            imageSplice.Dispose();`

so, is libtiff can generate tiff support by openslide?

sommour avatar Sep 20 '22 17:09 sommour

We do not know what is openslide. You might be better server on q&a site like StackOverflow.

Bobrovsky avatar Sep 21 '22 02:09 Bobrovsky

https://openslide.org/formats/aperio/ https://github.com/openslide OpenSlide can read a standard Tiff or Svs file. I create tiff by this library, and it works.

rwecho avatar Apr 25 '23 06:04 rwecho

@rwecho Thank you for the help.

Bobrovsky avatar Apr 25 '23 06:04 Bobrovsky