2019年9月17日 星期二

組合 image 陣列為 tif 檔案

List<System.Drawing.Image> images=new List<System.Drawing.Image>();
...
JoinTiffImages(images.ToArray(), 檔名, EncoderValue.CompressionLZW);

void JoinTiffImages(Image[] images, string outFile, EncoderValue compressEncoder)
            {
                //use the save encoder
                Encoder enc = Encoder.SaveFlag;
                EncoderParameters ep = new EncoderParameters(2);
                ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);
                ep.Param[1] = new EncoderParameter(Encoder.Compression, (long)compressEncoder);
                Image pages = images[0];
                int frame = 0;
                ImageCodecInfo info = GetEncoderInfo("image/tiff");
                foreach (Image img in images)
                {
                    if (frame == 0)
                    {
                        pages = img;
                        //save the first frame
                        pages.Save(outFile, info, ep);
                    }

                    else
                    {
                        //save the intermediate frames
                        ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.FrameDimensionPage);

                        pages.SaveAdd(img, ep);
                    }
                    if (frame == images.Length - 1)
                    {
                        //flush and close.
                        ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);
                        pages.SaveAdd(ep);
                    }
                    frame++;
                }
ImageCodecInfo GetEncoderInfo(string mimeType)
            {
                ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
                for (int j = 0; j < encoders.Length; j++)
                {
                    if (encoders[j].MimeType == mimeType)
                        return encoders[j];
                }
                throw new Exception(mimeType + " mime type not found in ImageCodecInfo");
            }
            }

沒有留言:

input 連結 datalist 用程式控制彈出選項

範例: nextTick(() => document.querySelector('input').showPicker());  ※僅支援現代瀏覽器