ImageTypesInTiff.cs
C# VB
//// This code is part of Document Solutions for Imaging demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System;using System.IO;using System.Drawing;using GrapeCity.Documents.Imaging;
namespace DsImagingWeb.Demos{ // This sample takes a color JPEG, converts it to different image types // (such as b/w and grayscale) and creates a multi-frame TIFF from those // images. public class ImageTypesInTiff { public string DefaultMime { get => Common.Util.MimeTypes.TIFF; }
public Stream GenerateImageStream(string targetMime, Size pixelSize, float dpi, bool opaque, string[] sampleParams = null) { if (targetMime != Common.Util.MimeTypes.TIFF) throw new Exception("This sample only supports TIFF output format.");
var path = Path.Combine("Resources", "Images", "minerva.jpg");
var ms = new MemoryStream(); using (var tw = new GcTiffWriter(ms)) using (var bmp = new GcBitmap(path)) { // Using the green channel produces a marginally better result for this photo. // For a much better bi-level image produced by dithering, see DitheringInTiff. using (var f = bmp.ToBilevelBitmap(ColorChannel.Green)) tw.AppendFrame(f); using (var f = bmp.ToGrayscaleBitmap()) tw.AppendFrame(f); // 4bpp allows from 8 to 16 colors, we use max (16): using (var f = bmp.ToIndexed4bppBitmap(16)) tw.AppendFrame(f); // 8bpp allows from 8 to 256 colors, we use max (256): using (var f = bmp.ToIndexed8bppBitmap(256)) tw.AppendFrame(f); tw.AppendFrame(bmp); } ms.Seek(0, SeekOrigin.Begin); return ms; } }}