Exemplo n.º 1
0
        private static int SaveSmallCoverForAlbum(string coverDbPath, string path)
        {
            byte[] data = null;
            string mimeType;

            using (var tlfile = TagLib.File.Create(path))
            {
                TagLib.Tag tag123 = tlfile.Tag;
                if (tag123.Pictures != null && tag123.Pictures.Length > 0)
                {
                    data     = tag123.Pictures[0].Data.ToArray();
                    mimeType = tag123.Pictures[0].MimeType;
                }
                else
                {
                    // check if cover file exists
                    string dir       = System.IO.Path.GetDirectoryName(path);
                    string coverpath = System.IO.Path.Combine(dir, "cover.jpg");
                    string mimetype  = "image/jpg";
                    if (!System.IO.File.Exists(coverpath))
                    {
                        coverpath = System.IO.Path.Combine(dir, "cover.png");
                        mimetype  = "image/png";
                    }

                    if (System.IO.File.Exists(coverpath))
                    {
                        data     = System.IO.File.ReadAllBytes(coverpath);
                        mimeType = mimetype;
                    }
                }
            }

            Cover cover;

            try
            {
                if (data != null && data.Length > 0)
                {
                    var resizedImageBytes = ImageResizer.ResizeImageTo(data, 200, 200, false);
                    cover = new Cover()
                    {
                        Data = resizedImageBytes
                    };

                    using (DAL.DALManager mgr = new DAL.DALManager(coverDbPath))
                        mgr.Set(cover);

                    return(cover.Id);
                }
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine("Unable to save cover for " + path + ": " + ex.GetType().FullName + " - " + ex.Message);
            }
            return(0);
        }