Commit 0fd7b8bf by liulongfei

缩略图

parent 9811b555
......@@ -42,20 +42,6 @@ namespace VIZ.Package.Domain
#endregion
#region ThumbnailUri -- 缩略图地址
private string thumbnailUri;
/// <summary>
/// 缩略图地址
/// </summary>
public string ThumbnailUri
{
get { return thumbnailUri; }
set { thumbnailUri = value; this.RaisePropertyChanged(nameof(ThumbnailUri)); }
}
#endregion
#region Remark -- 备注
private string remark;
......
......@@ -39,27 +39,27 @@ namespace VIZ.Package.Module
/// 开始下载图片任务
/// </summary>
/// <param name="pages">页集合</param>
public void BeginDownLoadIamge(List<PageModelBase> pages)
{
ThreadHelper.SafeRun(() =>
{
foreach (PageModelBase page in pages)
{
if (page.ThumbnailBitmap != null)
continue;
if (string.IsNullOrWhiteSpace(page.ThumbnailUri))
continue;
var bitmap = this.ghService.GetImage(page.ThumbnailUri);
WPFHelper.BeginInvoke(() =>
{
page.ThumbnailBitmap = bitmap;
});
}
});
}
//public void BeginDownLoadIamge(List<PageModelBase> pages)
//{
// ThreadHelper.SafeRun(() =>
// {
// foreach (PageModelBase page in pages)
// {
// if (page.ThumbnailBitmap != null)
// continue;
// if (string.IsNullOrWhiteSpace(page.ThumbnailUri))
// continue;
// var bitmap = this.ghService.GetImage(page.ThumbnailUri);
// WPFHelper.BeginInvoke(() =>
// {
// page.ThumbnailBitmap = bitmap;
// });
// }
// });
//}
/// <summary>
/// 开始下载控制对象
......
......@@ -64,7 +64,6 @@ namespace VIZ.Package.Module
page.PageGroupID = pageGroup.GroupID;
page.Scene = template.Scene;
page.ScenePath = template.ScenePath;
page.ThumbnailUri = template.ThumbnailUri;
page.Remark = vm.Remark;
page.Layer = vm.Layer;
page.EngineType = template.EngineType;
......@@ -108,7 +107,6 @@ namespace VIZ.Package.Module
page.PageGroupID = srcPage.PageGroupID;
page.Scene = srcPage.Scene;
page.ScenePath = srcPage.ScenePath;
page.ThumbnailUri = srcPage.ThumbnailUri;
page.Remark = srcPage.Remark;
page.Layer = srcPage.Layer;
page.EngineType = srcPage.EngineType;
......
......@@ -502,9 +502,6 @@ namespace VIZ.Package.Module
string remark = string.Join(",", pages.Select(p => p.Scene));
this.recordLogService.AppendLog(ApplicationConstants.APPLICATION_GROUP_NAME, RecordLogOperate.Operate, RecordLogTrigger.Human, RecordLogConstants.OPERATE_PAGE_UPDATE, remark);
// 开始下载图片
this.pageModelController.BeginDownLoadIamge(pages);
// 开始下载控制对象
this.pageModelController.BeginDownLoadControlObject(pages, () =>
{
......@@ -708,8 +705,6 @@ namespace VIZ.Package.Module
destGroup.Order = this.PageGroupModels.MaxOrDefault(p => p.Order) + 1;
this.PageGroupModels.Add(destGroup);
this.pageModelController.BeginDownLoadIamge(destGroup.Pages.ToList<PageModelBase>());
}
#endregion
......@@ -805,8 +800,6 @@ namespace VIZ.Package.Module
this.SelectedPageGroupModel.Pages.Add(destPage);
}
this.pageModelController.BeginDownLoadIamge(this.pageModelCopyController.WaitCopyPages.ToList<PageModelBase>());
}
#endregion
......@@ -909,8 +902,6 @@ namespace VIZ.Package.Module
pages.AddRange(group.Pages);
}
this.pageModelController.BeginDownLoadIamge(pages);
});
}
......@@ -1076,9 +1067,6 @@ namespace VIZ.Package.Module
// 添加页
this.SelectedPageGroupModel.Pages.Add(destPage);
// 获取缩略图
this.pageModelController.BeginDownLoadIamge(new List<PageModelBase> { destPage });
return destPage;
}
......@@ -1099,9 +1087,6 @@ namespace VIZ.Package.Module
// 添加页
this.SelectedPageGroupModel.Pages.Add(destPage);
// 下载缩略图
this.pageModelController.BeginDownLoadIamge(new List<PageModelBase> { destPage });
return destPage;
}
......
......@@ -295,9 +295,6 @@ namespace VIZ.Package.Module
string remark = string.Join(",", templates.Select(p => p.Scene));
this.recordLogService.AppendLog(ApplicationConstants.APPLICATION_GROUP_NAME, RecordLogOperate.Operate, RecordLogTrigger.Human, RecordLogConstants.OPERATE_TEMPLATE_UPDATE, remark);
// 开始下载图片
this.pageModelController.BeginDownLoadIamge(templates);
// 开始下载控制对象
this.pageModelController.BeginDownLoadControlObject(templates, () =>
{
......@@ -409,9 +406,6 @@ namespace VIZ.Package.Module
this.IsLoading = false;
});
// 获取场景模板缩略图
this.pageModelController.BeginDownLoadIamge(sceneTemplateModels.ToList<PageModelBase>());
});
}
......@@ -482,16 +476,11 @@ namespace VIZ.Package.Module
model.Layer = VizLayer.MAIN_LAYER;
model.PageType = PageType.Scene;
model.EngineType = EngineType.Viz;
model.ThumbnailUri = fileModel.Thumbnail;
model.ThumbnailBitmap = fileModel.ThumbnailBitmap;
list.Add(model);
this.SceneTemplateModels.Add(model);
}
// 开始下载缩略图
this.pageModelController.BeginDownLoadIamge(list);
// 开始下载控制对象
this.pageModelController.BeginDownLoadControlObject(list, () =>
{
......
......@@ -6,6 +6,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VIZ.Package.Domain;
using VIZ.Package.Storage;
namespace VIZ.Package.Service
{
......
using System;
using LiteDB;
using log4net;
using log4net.Repository.Hierarchy;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
......@@ -6,6 +9,7 @@ using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web.UI;
using VIZ.Framework.Core;
using VIZ.Package.Domain;
using VIZ.Package.Storage;
......@@ -18,6 +22,11 @@ namespace VIZ.Package.Service
public class PageService
{
/// <summary>
/// 日志
/// </summary>
private readonly static ILog log = LogManager.GetLogger(typeof(PageService));
/// <summary>
/// 加载页模板集合
/// </summary>
/// <returns>节目模板集合</returns>
......@@ -25,13 +34,12 @@ namespace VIZ.Package.Service
{
List<PageTemplateModel> list = new List<PageTemplateModel>();
foreach (var entity in ApplicationDomainEx.ProjectDbContext.PageTemplate.FindAll())
foreach (var entity in ApplicationDomainEx.ProjectDbContext.PageTemplate.FindAll().ToList())
{
PageTemplateModel model = new PageTemplateModel();
model.Scene = entity.Scene;
model.ScenePath = entity.ScenePath;
model.ThumbnailUri = entity.ThumbnailUri;
model.Remark = entity.Remark;
model.Layer = entity.Layer;
model.EngineType = entity.EngineType;
......@@ -42,6 +50,8 @@ namespace VIZ.Package.Service
model.StateIdentifier = entity.StateIdentifier;
model.BackgroundScene = entity.BackgroundScene;
model.TemplateID = entity.TemplateID;
// 获取缩略图
model.ThumbnailBitmap = this.GetSceneThumbnailFromDB(model);
list.Add(model);
}
......@@ -55,6 +65,7 @@ namespace VIZ.Package.Service
/// <param name="pageTemplates">页模板集合</param>
public void SavePageTemplates(IList<PageTemplateModel> pageTemplates)
{
// Step 1. 保存数据
ApplicationDomainEx.ProjectDbContext.PageTemplate.DeleteAll();
List<PageTemplateEntity> list = new List<PageTemplateEntity>();
......@@ -66,7 +77,6 @@ namespace VIZ.Package.Service
entity.Scene = model.Scene;
entity.ScenePath = model.ScenePath;
entity.ThumbnailUri = model.ThumbnailUri;
entity.Remark = model.Remark;
entity.Layer = model.Layer;
entity.EngineType = model.EngineType;
......@@ -79,6 +89,8 @@ namespace VIZ.Package.Service
entity.TemplateID = model.TemplateID;
entity.Order = i;
this.SaveSceneThumbnailToDB(model, model.ThumbnailBitmap);
list.Add(entity);
}
......@@ -106,7 +118,7 @@ namespace VIZ.Package.Service
}
// 页
foreach (var entity in ApplicationDomainEx.ProjectDbContext.Page.FindAll())
foreach (var entity in ApplicationDomainEx.ProjectDbContext.Page.FindAll().ToList())
{
if (!dic.TryGetValue(entity.PageGroupID, out PageGroupModel groupModel))
continue;
......@@ -115,7 +127,6 @@ namespace VIZ.Package.Service
model.Scene = entity.Scene;
model.ScenePath = entity.ScenePath;
model.ThumbnailUri = entity.ThumbnailUri;
model.Remark = entity.Remark;
model.Layer = entity.Layer;
model.EngineType = entity.EngineType;
......@@ -134,6 +145,8 @@ namespace VIZ.Package.Service
model.PluginName = ApplicationDomainEx.PluginInfos.FirstOrDefault(p => p.ID == entity.PluginID)?.Name;
model.PageNum = entity.PageNum;
model.ConnGroupID = entity.ConnGroupID;
// 场景缩略图
model.ThumbnailBitmap = this.GetSceneThumbnailFromDB(model);
groupModel.Pages.Add(model);
}
......@@ -178,7 +191,6 @@ namespace VIZ.Package.Service
pageEntity.Scene = pageModel.Scene;
pageEntity.ScenePath = pageModel.ScenePath;
pageEntity.ThumbnailUri = pageModel.ThumbnailUri;
pageEntity.Remark = pageModel.Remark;
pageEntity.Layer = pageModel.Layer;
pageEntity.EngineType = pageModel.EngineType;
......@@ -196,6 +208,8 @@ namespace VIZ.Package.Service
pageEntity.LayerIdentifier = pageModel.LayerIdentifier;
pageEntity.StateIdentifier = pageModel.StateIdentifier;
pageEntity.BackgroundScene = pageModel.BackgroundScene;
// 保存缩略图
this.SaveSceneThumbnailToDB(pageModel, pageModel.ThumbnailBitmap);
pages.Add(pageEntity);
}
......@@ -207,5 +221,87 @@ namespace VIZ.Package.Service
ApplicationDomainEx.ProjectDbContext.PageGroup.Insert(groups);
ApplicationDomainEx.ProjectDbContext.Page.Insert(pages);
}
/// <summary>
/// 从缓存获取场景缩略图
/// </summary>
/// <param name="pageBase">页基类</param>
/// <returns>场景缩略图</returns>
private System.Drawing.Bitmap GetSceneThumbnailFromDB(PageModelBase pageBase)
{
try
{
Guid id = Guid.Empty;
if (pageBase is PageTemplateModel template)
{
id = template.TemplateID;
}
else if (pageBase is PageModel page)
{
id = page.PageID;
}
else
{
return null;
}
LiteFileInfo<Guid> img = ApplicationDomainEx.ProjectDbContext.SceneThumbnailCache.FindById(id);
if (img == null)
return null;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
img.CopyTo(ms);
return new System.Drawing.Bitmap(ms);
}
}
catch (Exception ex)
{
log.Error(ex);
return null;
}
}
/// <summary>
/// 保存缩略图至缓存
/// </summary>
/// <param name="pageBase">页基类</param>
/// <param name="bmp">场景缩略图</param>
private void SaveSceneThumbnailToDB(PageModelBase pageBase, System.Drawing.Bitmap bmp)
{
if (bmp == null)
return;
try
{
Guid id = Guid.Empty;
if (pageBase is PageTemplateModel template)
{
id = template.TemplateID;
}
else if (pageBase is PageModel page)
{
id = page.PageID;
}
else
{
return;
}
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
ms.Position = 0;
ApplicationDomainEx.ProjectDbContext.SceneThumbnailCache.Upload(id, $"{id}", ms);
}
}
catch (Exception ex)
{
log.Error(ex);
}
}
}
}
......@@ -83,10 +83,7 @@ namespace VIZ.Package.Service
this.vizCommandService.SetObject(ApplicationDomainEx.PreviewConn, pageBase.ScenePath, pageBase.Layer);
// 获取场景缩略图
//if (pageBase.ThumbnailBitmap == null)
//{
// pageBase.ThumbnailBitmap = this.vizCommandService.GetSceneImage(ApplicationDomainEx.PreviewConn, pageBase.ScenePath);
//}
pageBase.ThumbnailBitmap = this.vizCommandService.GetSceneImage(ApplicationDomainEx.PreviewConn, pageBase.ScenePath);
// 获取控制对象
ControlObjectModel controlObject = this.vizCommandControlObjectService.GetControlObject(ApplicationDomainEx.PreviewConn);
......
......@@ -29,16 +29,6 @@ namespace VIZ.Package.Storage
public string ScenePath { get; set; }
/// <summary>
/// 缩略图地址
/// </summary>
public string ThumbnailUri { get; set; }
/// <summary>
/// 缩略图数据
/// </summary>
public byte[] ThumbnailBuffer { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
......
......@@ -39,6 +39,8 @@ namespace VIZ.Package.Storage
this.Page = this.Database.GetCollection<PageEntity>();
this.ControlField = this.Database.GetCollection<ControlFieldEntity>();
this.ControlObject = this.Database.GetCollection<ControlObjectEntity>();
this.SceneThumbnailCache = this.Database.GetStorage<Guid>("_SceneThumbnailFiles", "_SceneThumbnailChunks");
}
/// <summary>
......@@ -72,6 +74,11 @@ namespace VIZ.Package.Storage
public ILiteCollection<ControlObjectEntity> ControlObject { get; private set; }
/// <summary>
/// 场景缩略图缓存
/// </summary>
public ILiteStorage<Guid> SceneThumbnailCache { get; private set; }
/// <summary>
/// 销毁
/// </summary>
public void Dispose()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment