Commit d9f016be by wangonghui

媒体资源库添加查看和编辑图片修改

parent a261c56c
...@@ -3,6 +3,7 @@ using System; ...@@ -3,6 +3,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Configuration; using System.Configuration;
using System.Drawing; using System.Drawing;
using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
...@@ -77,7 +78,7 @@ namespace VIZ.Package.Module ...@@ -77,7 +78,7 @@ namespace VIZ.Package.Module
try try
{ {
MHResourceFileModel GHFile = new MHResourceFileModel(); MHResourceFileModel GHFile = new MHResourceFileModel();
if (ThumbnailHelper.IsImageByName(file.fileName)) if (ThumbnailHelper.IsImageByName(file.fileName)|| ThumbnailHelper.IsVideo(file.fileName))
{ {
GHFile.Name = file.fileName; GHFile.Name = file.fileName;
GHFile.Path = file.smallIconUrl; GHFile.Path = file.smallIconUrl;
...@@ -88,21 +89,32 @@ namespace VIZ.Package.Module ...@@ -88,21 +89,32 @@ namespace VIZ.Package.Module
log.Info("后去图片结束"); log.Info("后去图片结束");
GHFile.FileType = ResourceFileType.IMAGE; if (ThumbnailHelper.IsImageByName(file.fileName))
{
GHFile.FileType = ResourceFileType.IMAGE;
}
else
{
GHFile.FileType = ResourceFileType.VIDEO;
}
GHFile.Date = Convert.ToDateTime(file.fileUpdateTime).ToString("yyyy/MM/dd HH:mm"); GHFile.Date = Convert.ToDateTime(file.fileUpdateTime).ToString("yyyy/MM/dd HH:mm");
GHFile.FileSize = file.fileSize; GHFile.FileSize = file.fileSize;
Image img = Image.FromStream(fileResult);
// img = ThumbnailHelper.GetThumbnail(img, img.Width / 2, img.Height / 2); if (ThumbnailHelper.IsVideo(fileResult))
{
Image img = Image.FromStream(fileResult);
//Bitmap originBmp = new Bitmap(img); // img = ThumbnailHelper.GetThumbnail(img, img.Width / 2, img.Height / 2);
GHFile.OriginThumbnailBitmap = img; //Bitmap originBmp = new Bitmap(img);
//缩略图 GHFile.OriginThumbnailBitmap = img;
//img = ThumbnailHelper.GetThumbnail(img, img.Width / 2, img.Height / 2);
Bitmap bmp = new Bitmap(img); //缩略图
GHFile.ThumbnailBitmap = bmp; //img = ThumbnailHelper.GetThumbnail(img, img.Width / 2, img.Height / 2);
Bitmap bmp = new Bitmap(img);
GHFile.ThumbnailBitmap = bmp;
}
list.Add(GHFile); list.Add(GHFile);
...@@ -111,21 +123,21 @@ namespace VIZ.Package.Module ...@@ -111,21 +123,21 @@ namespace VIZ.Package.Module
log.Info("图片处理"); log.Info("图片处理");
} }
else if (ThumbnailHelper.IsVideo(file.fileName)) //else if (ThumbnailHelper.IsVideo(file.fileName))
{ //{
GHFile.Name = file.fileName; // GHFile.Name = file.fileName;
GHFile.Path = file.smallIconUrl; // GHFile.Path = file.smallIconUrl;
GHFile.FileType = ResourceFileType.VIDEO; // GHFile.FileType = ResourceFileType.VIDEO;
GHFile.Date = Convert.ToDateTime(file.fileUpdateTime).ToString("yyyy/MM/dd HH:mm"); // GHFile.Date = Convert.ToDateTime(file.fileUpdateTime).ToString("yyyy/MM/dd HH:mm");
GHFile.FileSize = file.fileSize; // GHFile.FileSize = file.fileSize;
string strVedioPath = string.Format("{0}{1}", System.Environment.CurrentDirectory, "\\Resources\\Vedio.jpeg"); // string strVedioPath = string.Format("{0}{1}", System.Environment.CurrentDirectory, "\\Resources\\Vedio.jpeg");
Image vedioImage = Image.FromFile(strVedioPath); // Image vedioImage = Image.FromFile(strVedioPath);
vedioImage = ThumbnailHelper.GetThumbnail(vedioImage, vedioImage.Width / 2, vedioImage.Height / 2); // vedioImage = ThumbnailHelper.GetThumbnail(vedioImage, vedioImage.Width / 2, vedioImage.Height / 2);
Bitmap vedioBtm = new Bitmap(vedioImage); // Bitmap vedioBtm = new Bitmap(vedioImage);
GHFile.ThumbnailBitmap = vedioBtm; // GHFile.ThumbnailBitmap = vedioBtm;
GHFile.FileType = ResourceFileType.VIDEO; // GHFile.FileType = ResourceFileType.VIDEO;
list.Add(GHFile); // list.Add(GHFile);
} //}
i++; i++;
} }
catch (Exception ex) catch (Exception ex)
......
...@@ -177,6 +177,25 @@ namespace VIZ.Package.Module ...@@ -177,6 +177,25 @@ namespace VIZ.Package.Module
return isVideo; return isVideo;
} }
/// <summary>
/// 判断是否为视频流
/// </summary>
/// <param name="stream"></param>
/// <returns></returns>
public static bool IsVideo(Stream stream)
{
try
{
Image img = Image.FromStream(stream);
return true;
}
catch(Exception ex)
{
return false;
}
}
/// <summary> /// <summary>
/// 从完整路径中查找文件或文件夹名称 /// 从完整路径中查找文件或文件夹名称
/// </summary> /// </summary>
......
...@@ -354,7 +354,7 @@ namespace VIZ.Package.Module ...@@ -354,7 +354,7 @@ namespace VIZ.Package.Module
double ImageAreaHeight = this.ImageArea.ActualHeight; double ImageAreaHeight = this.ImageArea.ActualHeight;
//裁剪区域理论位置 //裁剪区域理论位置
RectangleAreaModel Model = this.CalculatedArea(MousePoint, true); RectangleAreaModel Model = this.CalculatedArea(MousePoint, false);
if (Model != null) if (Model != null)
{ {
//不能超出边界区域 //不能超出边界区域
......
<dx:ThemedWindow
x:Class="VIZ.Package.Module.ImageShowWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
Title="查看图片" Height="400" Width="500">
<Grid>
<StackPanel>
<Image Source="{Binding ShowImage,Mode=TwoWay}" Height="380" Width="500" />
</StackPanel>
</Grid>
</dx:ThemedWindow>
using DevExpress.Xpf.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using VIZ.Framework.Core;
namespace VIZ.Package.Module
{
/// <summary>
/// Interaction logic for ImageShowWindow.xaml
/// </summary>
public partial class ImageShowWindow : ThemedWindow
{
public ImageShowWindow()
{
InitializeComponent();
WPFHelper.BindingViewModel(this, new ImageShowViewModel());
}
}
}
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
</Grid> </Grid>
</DataTemplate> </DataTemplate>
</dxg:GridControl.Resources> </dxg:GridControl.Resources>
<dxg:GridControl.Columns> <dxg:GridControl.Columns>
<dxg:GridColumn FieldName="Name" AllowColumnFiltering="False" AllowEditing="False" ReadOnly="True"></dxg:GridColumn> <dxg:GridColumn FieldName="Name" AllowColumnFiltering="False" AllowEditing="False" ReadOnly="True"></dxg:GridColumn>
</dxg:GridControl.Columns> </dxg:GridControl.Columns>
......
...@@ -26,8 +26,10 @@ ...@@ -26,8 +26,10 @@
<MenuItem Header="删除文件" Command="{Binding Path=PlacementTarget.DataContext.DeleteFileCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/> <MenuItem Header="删除文件" Command="{Binding Path=PlacementTarget.DataContext.DeleteFileCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
<MenuItem Header="移动文件" Command="{Binding Path=PlacementTarget.DataContext.MoveFileCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/> <MenuItem Header="移动文件" Command="{Binding Path=PlacementTarget.DataContext.MoveFileCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
<MenuItem Header="导出素材" Command="{Binding Path=PlacementTarget.DataContext.ExportFileCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/> <MenuItem Header="导出素材" Command="{Binding Path=PlacementTarget.DataContext.ExportFileCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
<MenuItem Header="编辑图片" Command="{Binding Path=PlacementTarget.DataContext.EditImageCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/> <MenuItem Header="编辑图片" Command="{Binding Path=PlacementTarget.DataContext.EditImageCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
<MenuItem Header="查看图片" Command="{Binding Path=PlacementTarget.DataContext.ShowImageCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
<Separator/> <Separator/>
<MenuItem Header="文件列表" Command="{Binding Path=PlacementTarget.DataContext.FilesListCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/> <MenuItem Header="文件列表" Command="{Binding Path=PlacementTarget.DataContext.FilesListCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
</ContextMenu> </ContextMenu>
......
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
using VIZ.Framework.Core;
namespace VIZ.Package.Module
{
public class ImageShowViewModel:ViewModelBase
{
/// <summary>
/// 绑定图片
/// </summary>
private BitmapImage showImage;
public BitmapImage ShowImage
{
get { return showImage; }
set { showImage = value; this.RaisePropertyChanged(nameof(ShowImage)); }
}
/// <summary>
/// bitmap 转BitmapImage
/// </summary>
/// <param name="bitmap"></param>
/// <returns></returns>
public BitmapImage BitmapToBitmapImage(System.Drawing.Bitmap bitmap)
{
System.Drawing.Bitmap ImageOriginalBase = new System.Drawing.Bitmap(bitmap);
BitmapImage bitmapImage = new BitmapImage();
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
ImageOriginalBase.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
bitmapImage.BeginInit();
bitmapImage.StreamSource = ms;
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.EndInit();
bitmapImage.Freeze();
}
return bitmapImage;
}
}
}
...@@ -76,7 +76,8 @@ namespace VIZ.Package.Module ...@@ -76,7 +76,8 @@ namespace VIZ.Package.Module
this.FileFilterCommand = new VCommand<ResourceFileType>(this.FileFilter); this.FileFilterCommand = new VCommand<ResourceFileType>(this.FileFilter);
this.FileRowFilterCommand = new DevExpress.Mvvm.DelegateCommand<RowFilterArgs>(this.FileRowFilter); this.FileRowFilterCommand = new DevExpress.Mvvm.DelegateCommand<RowFilterArgs>(this.FileRowFilter);
this.FileDoubleClickCommand = new VCommand(this.FileDoubleClick); this.FileDoubleClickCommand = new VCommand(this.FileDoubleClick);
this.EditImageCommand = new VCommand(EditImage); this.EditImageCommand = new VCommand(this.EditImage);
this.ShowImageCommand = new VCommand(this.ShowImage);
//this.FileContextMenuOpendCommand = new VCommand(this.FileContextMenuOpend); //this.FileContextMenuOpendCommand = new VCommand(this.FileContextMenuOpend);
//this.AddProgramTemplateCommand = new VCommand(this.AddProgramTemplate, this.CanAddProgramTemplate); //this.AddProgramTemplateCommand = new VCommand(this.AddProgramTemplate, this.CanAddProgramTemplate);
// this.CopyFilePathCommand = new VCommand(this.CopyFilePath, this.CanCopyFilePath); // this.CopyFilePathCommand = new VCommand(this.CopyFilePath, this.CanCopyFilePath);
...@@ -945,7 +946,7 @@ namespace VIZ.Package.Module ...@@ -945,7 +946,7 @@ namespace VIZ.Package.Module
{ {
if (selectedFileModel == null || selectedFileModel.ThumbnailBitmap == null) return; if (selectedFileModel == null || selectedFileModel.ThumbnailBitmap == null||selectedFileModel.FileType==ResourceFileType.VIDEO) return;
//记录操作log日志 //记录操作log日志
this.recordLogService.AppendLog(ApplicationConstants.APPLICATION_GROUP_NAME, RecordLogOperate.Operate, RecordLogTrigger.Human, RecordLogConstants.OPERATE_FILE_EDITIMAGE); this.recordLogService.AppendLog(ApplicationConstants.APPLICATION_GROUP_NAME, RecordLogOperate.Operate, RecordLogTrigger.Human, RecordLogConstants.OPERATE_FILE_EDITIMAGE);
...@@ -1023,6 +1024,50 @@ namespace VIZ.Package.Module ...@@ -1023,6 +1024,50 @@ namespace VIZ.Package.Module
#endregion #endregion
#region 查看图片选项
public VCommand ShowImageCommand { get; set; }
private async void ShowImage()
{
try
{
if (selectedFileModel == null || selectedFileModel.ThumbnailBitmap == null||selectedFileModel.FileType==ResourceFileType.VIDEO) return;
//记录操作log日志
this.recordLogService.AppendLog(ApplicationConstants.APPLICATION_GROUP_NAME, RecordLogOperate.Operate, RecordLogTrigger.Human, "图片查看");
ImageShowWindow imageShowWindow = new ImageShowWindow();
ImageShowViewModel vm = imageShowWindow.DataContext as ImageShowViewModel;
string url = string.Format("{0}GetFile?filePath={1}&isResize=false", ApplicationDomainEx.MediaConfig.Url, SelectedFileModel.Path);
var imageResult = await MediaResourceFileService.GetImage(url);
Image img = Image.FromStream(imageResult);
//Bitmap bmp = new Bitmap(img);
Bitmap bmp = new Bitmap(img);
vm.ShowImage = vm.BitmapToBitmapImage(bmp);
imageShowWindow.ShowDialog();
}
catch (Exception ex)
{
log.Error(ex.Message);
}
}
#endregion
#region 刷新回收站文件 #region 刷新回收站文件
public VCommand RefresRecyclehFileCommand { get; set; } public VCommand RefresRecyclehFileCommand { get; set; }
......
...@@ -23,5 +23,6 @@ namespace VIZ.Package.Module ...@@ -23,5 +23,6 @@ namespace VIZ.Package.Module
public class MediaResourceViewModel :MediaResourcePanelViewModel public class MediaResourceViewModel :MediaResourcePanelViewModel
{ {
} }
} }
...@@ -201,7 +201,11 @@ ...@@ -201,7 +201,11 @@
<Compile Include="Resource\MediaResource\ImageCut\ImageEditWindow.xaml.cs"> <Compile Include="Resource\MediaResource\ImageCut\ImageEditWindow.xaml.cs">
<DependentUpon>ImageEditWindow.xaml</DependentUpon> <DependentUpon>ImageEditWindow.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Resource\MediaResource\ImageCut\ImageShowWindow.xaml.cs">
<DependentUpon>ImageShowWindow.xaml</DependentUpon>
</Compile>
<Compile Include="Resource\MediaResource\ViewModel\ImageEditViewModel.cs" /> <Compile Include="Resource\MediaResource\ViewModel\ImageEditViewModel.cs" />
<Compile Include="Resource\MediaResource\ViewModel\ImageShowViewModel.cs" />
<Compile Include="Setting\Conn\View\ConnSettingView.xaml.cs"> <Compile Include="Setting\Conn\View\ConnSettingView.xaml.cs">
<DependentUpon>ConnSettingView.xaml</DependentUpon> <DependentUpon>ConnSettingView.xaml</DependentUpon>
</Compile> </Compile>
...@@ -530,6 +534,10 @@ ...@@ -530,6 +534,10 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="Resource\MediaResource\ImageCut\ImageShowWindow.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Setting\Conn\View\ConnSettingView.xaml"> <Page Include="Setting\Conn\View\ConnSettingView.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
......
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