Как создать файл мира в С# из изображения TIFF?

Есть ли простой способ извлечь файл привязки в С# из изображения TIFF?

У меня есть изображение в формате tiff, и мне нужно создать файл привязки без какой-либо сторонней библиотеки.


person e.s    schedule 12.01.2017    source источник


Ответы (1)


Я нашел способ...

    /// <summary>
    /// Create tfw - world file.
    /// </summary>
    /// <param name="filename">tif image full filename</param>
    private void CreateWorldFile(string filename)
    {
        using (var bitmapImage = new Bitmap(filename))
        {
            PropertyItem[] imageProps = bitmapImage.PropertyItems;

            var modelscale = imageProps.First(a => a.Id == GEOTIFF_MODELPIXELSCALETAG);
            var tiepoint = imageProps.First(a => a.Id == GEOTIFF_MODELTIEPOINTTAG);

            double x = BitConverter.ToDouble(tiepoint.Value, 0 + 24);
            double y = BitConverter.ToDouble(tiepoint.Value, 0 + 32);

            double xscale = BitConverter.ToDouble(modelscale.Value, 0);
            double yscale = BitConverter.ToDouble(modelscale.Value, 0 + 8);

            string tfwFileName = Path.GetDirectoryName(filename) + "\\" + Path.GetFileNameWithoutExtension(filename) + ".tfw";

            using (System.IO.StreamWriter file = new System.IO.StreamWriter(tfwFileName))
            {
                file.WriteLine(xscale);
                file.WriteLine("0.0");
                file.WriteLine("0.0");
                file.WriteLine(yscale);
                file.WriteLine(x);
                file.WriteLine(y);
            }
        }
    }

    private readonly int GEOTIFF_MODELPIXELSCALETAG = 33550;
    private readonly int GEOTIFF_MODELTIEPOINTTAG = 33922;
person e.s    schedule 12.01.2017
comment
имя метода немного странное, не должно ли оно быть CreateWordFile? - person Master Azazel; 12.01.2017
comment
@Мастер: Нет! Смотрите предоставленную ссылку! - person TaW; 12.01.2017