示例#1
0
        public Dictionary <string, string> GetMetadata(ThumbInfo info)
        {
            var dict = new Dictionary <string, string>();

            if (entryOffsets.Length == 0)
            {
                return(dict);
            }
            if (info == null)
            {
                return(dict);
            }

            dict.Add("File offset", info.fileOffset.ToString());
            dict.Add("Entry size", info.entrySize.ToString());
            dict.Add("Entry hash", info.entryHash.ToString("X16"));
            dict.Add("Filename length", info.fileNameLength.ToString());
            dict.Add("Padding length", info.paddingLength.ToString());
            dict.Add("Data length", info.dataLength.ToString());
            dict.Add("Image width", info.imageWidth.ToString());
            dict.Add("Image height", info.imageHeight.ToString());
            dict.Add("Data checksum", info.dataChecksum.ToString("X16"));
            dict.Add("Header checksum", info.headerChecksum.ToString("X16"));
            return(dict);
        }
示例#2
0
        private void OnEnable()
        {
            mThumInfo = new ThumbInfo();

            blockGroups = new List <BlockDataGroup>();
            for (int i = 0; i < categoryNames.Length; i++)
            {
                blockGroups.AddRange(BlockDataGroupFactory.Instance.GetGroupsByCategory((Category)i));
            }

            searchText = "";

            var colors = PBDataBaseManager.Instance.GetBlockColorDatas();

            colors.Sort((p1, p2) => String.Compare(p1.code, p2.code, StringComparison.Ordinal));
            var t = colors.Select(color => color.color).ToList();

            t.Insert(0, "所有");
            mColorNames = t.ToArray();

            mColorToggles = new bool[colors.Count + 1];
            for (int i = 0; i < mColorToggles.Length; i++)
            {
                mColorToggles[i] = i == 0;
            }

            UpdateLightNames();
        }
示例#3
0
        private void testConfigString(String cfgString)
        {
            Dictionary <String, ThumbInfo> cfgList = ThumbConfig.ReadString(cfgString);

            Assert.AreEqual(4, cfgList.Count);

            ThumbInfo x = cfgList["s"];

            Assert.AreEqual(75, x.Width);
            Assert.AreEqual(75, x.Height);
            Assert.AreEqual(SaveThumbnailMode.Auto, x.Mode);

            x = cfgList["sx"];
            Assert.AreEqual(200, x.Width);
            Assert.AreEqual(200, x.Height);
            Assert.AreEqual(SaveThumbnailMode.Auto, x.Mode);

            x = cfgList["m"];
            Assert.AreEqual(600, x.Width);
            Assert.AreEqual(600, x.Height);
            Assert.AreEqual(SaveThumbnailMode.Auto, x.Mode);

            x = cfgList["b"];
            Assert.AreEqual(1024, x.Width);
            Assert.AreEqual(1024, x.Height);
            Assert.AreEqual(SaveThumbnailMode.Auto, x.Mode);
        }
示例#4
0
        public static Boolean SaveThumbSingle(String filename, String suffix, ThumbInfo x)
        {
            try {
                using (Image img = Image.FromFile(filename)) {
                    String destPath = Img.GetThumbPath(filename, suffix);
                    if (file.Exists(destPath))
                    {
                        file.Delete(destPath);
                    }

                    if (img.Size.Width <= x.Width && img.Size.Height <= x.Height)
                    {
                        File.Copy(filename, destPath);
                    }
                    else if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif) && ImageAnimator.CanAnimate(img))
                    {
                        File.Copy(filename, destPath);
                    }
                    else
                    {
                        Img.SaveThumbnail(filename, destPath, x.Width, x.Height, x.Mode);
                    }
                }

                return(true);
            }
            catch (OutOfMemoryException ex) {
                logger.Error("file format error: " + filename);
                return(false);
            }
        }
示例#5
0
        public static Boolean SaveThumbSingle(String srcPath, String suffix, ThumbInfo thumbInfo)
        {
            String thumbPath = Img.GetThumbPath(srcPath, suffix);
            int    x         = thumbInfo.Width;
            int    y         = thumbInfo.Height;

            try {
                using (Image img = Image.FromFile(srcPath)) {
                    if (file.Exists(thumbPath))
                    {
                        file.Delete(thumbPath);
                    }


                    if (img.Size.Width <= x && img.Size.Height <= y)
                    {
                        File.Copy(srcPath, thumbPath);
                    }
                    else if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif) && ImageAnimator.CanAnimate(img))
                    {
                        File.Copy(srcPath, thumbPath);
                    }
                    else
                    {
                        logger.Info("save thumbnail..." + suffix + ": " + srcPath + "=>" + thumbPath);
                        Img.SaveThumbnail(srcPath, thumbPath, x, y, thumbInfo.Mode);
                    }
                    return(true);
                }
            }
            catch (OutOfMemoryException ex) {
                logger.Error("file format error: " + srcPath);
                return(false);
            }
        }
示例#6
0
        private static int getCfgWidth()
        {
            ThumbInfo t = ThumbConfig.GetPhoto("sx");

            if (t == null)
            {
                return(170);
            }
            return(t.Width);
        }
示例#7
0
        public void testThumbConfig()
        {
            String cfgString = "s=width:75|height:75|mode:auto, sx=width:200|height:200|mode:auto, m=width:600|height:600|mode:auto, b=width:1024|height:1024|mode:auto";

            testConfigString(cfgString);

            // 加上多余空格
            cfgString = "   s=width:75|height:75|mode:auto,    sx=width:200|height:200|mode:auto, m=width:600|height:600|mode:auto,   b=width:1024|height:1024|mode:auto    ";
            testConfigString(cfgString);

            // 加上大小写
            cfgString = " s = width:75 | HeiGht:75        | mode:auto,   SX=width:200|height:200|mode:auto, m=width   :  600  |height:600| Mode :  auto,   b  = width:1024  | height:1024| mode:auto ";
            testConfigString(cfgString);

            // 边界测试
            cfgString = "   ";
            Dictionary <String, ThumbInfo> cfgList = ThumbConfig.ReadString(cfgString);

            Assert.AreEqual(0, cfgList.Count);

            cfgString = null;
            cfgList   = ThumbConfig.ReadString(cfgString);
            Assert.AreEqual(0, cfgList.Count);

            cfgString = " aaaaaaaaaaaaa,   SX=width:200|height:200|mode:auto, m=width   :  600  |height:600| Mode :  cut, o ";
            cfgList   = ThumbConfig.ReadString(cfgString);
            Assert.AreEqual(2, cfgList.Count);
            ThumbInfo x = cfgList["sx"];

            Assert.AreEqual(200, x.Width);
            Assert.AreEqual(200, x.Height);
            Assert.AreEqual(SaveThumbnailMode.Auto, x.Mode);

            x = cfgList["m"];
            Assert.AreEqual(600, x.Width);
            Assert.AreEqual(600, x.Height);
            Assert.AreEqual(SaveThumbnailMode.Cut, x.Mode);
        }