#grayscale #libtiff
#полутоновый #либтиф
Вопрос:
Я могу использовать LIBTIFF для чтения тегов файла TIF с одним изображением, включая длину и ширину. Я выяснил, как создать файл TIF аналогичного размера. Но я не могу понять, как прочитать массив из 24-битных ячеек, разделить значения красного, зеленого и синего, а затем записать в массив из 8-битных ячеек. Как только красный, Зеленый и синий будут разделены, я думаю, что смогу рассчитать оттенок серого.
Private Sub Gray_Scale_It(fileColor As String, fileGray As String) Dim inpTif As Tiff Dim outTif As Tiff ' ---- Open color TIF and get basic info inpTif = Tiff.Open(fileColor, "r") Dim imageHeight As FieldValue() = inpTif.GetField(TiffTag.IMAGELENGTH) Dim h As Integer = imageHeight(0).ToInt() Dim imageWidth As FieldValue() = inpTif.GetField(TiffTag.IMAGEWIDTH) Dim w As Integer = imageWidth(0).ToInt() Dim bitsPerSample As FieldValue() = inpTif.GetField(TiffTag.BITSPERSAMPLE) Dim bps As Short = bitsPerSample(0).ToShort() Dim samplesPerPixel As FieldValue() = inpTif.GetField(TiffTag.SAMPLESPERPIXEL) Dim spp As Short = samplesPerPixel(0).ToShort() Dim photoMetricField As FieldValue() = inpTif.GetField(TiffTag.PHOTOMETRIC) Dim photo As Photometric = DirectCast(photoMetricField(0).ToInt(), Photometric) ' ---- Create gray TIF and set basic info outTif = Tiff.Open(fileGray, "w") outTif.SetField(TiffTag.IMAGEWIDTH, w) outTif.SetField(TiffTag.IMAGELENGTH, h) outTif.SetField(TiffTag.BITSPERSAMPLE, 8) outTif.SetField(TiffTag.SAMPLESPERPIXEL, 1) outTif.SetField(TiffTag.PHOTOMETRIC, 0) ?????? End Sub