缩略图测试

Uat_Study
hang 2022-05-20 10:14:01 +08:00
parent 04a24ea438
commit ca1f23ca4d
7 changed files with 144 additions and 42 deletions

View File

@ -0,0 +1,94 @@
using AutoMapper;
using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure.Extention;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.IO;
using System.Threading.Tasks;
namespace IRaCIS.Core.API.Controllers
{
[ApiExplorerSettings(GroupName = "Trial")]
[ApiController]
public class CommonController : ControllerBase
{
public IMapper _mapper { get; set; }
public IUserInfo _userInfo { get; set; }
private readonly IWebHostEnvironment _hostEnvironment;
public CommonController(IMapper mapper, IUserInfo userInfo, IMediator mediator, IWebHostEnvironment hostEnvironment)
{
_hostEnvironment = hostEnvironment;
_mapper = mapper;
_userInfo = userInfo;
}
[AllowAnonymous]
[HttpGet("Common/LocalFilePreview")]
public async Task<FileContentResult> LocalFilePreview(string relativePath)
{
var rootPath = Directory.GetParent(_hostEnvironment.ContentRootPath.TrimEnd('\\')).IfNullThrowException().FullName;
var _fileStorePath = Path.Combine(rootPath, relativePath.Replace('/', '\\').Trim('\\'));
var storePreviewPath = _fileStorePath + ".preview.jpeg";
//if (!System.IO.File.Exists(storePreviewPath))
//{
ImageResizeHelper.ResizeSave(_fileStorePath, storePreviewPath);
//}
return new FileContentResult(await System.IO.File.ReadAllBytesAsync(storePreviewPath), "image/jpeg");
//_logger.LogError(rootPath);
//_logger.LogError(_fileStorePath);
//if (!File.Exists(storePreviewPath))
//{
//Bitmap sourceImage = new Bitmap(File.OpenRead(_fileStorePath));
//System.Drawing.Image destinationImage = new Bitmap(500, 500);
//Graphics g = Graphics.FromImage(destinationImage);
//g.DrawImage(
// sourceImage,
// new Rectangle(0, 0, 500, 500),
// new Rectangle(0, 0, sourceImage.Width, sourceImage.Height),
// GraphicsUnit.Pixel
//);
//destinationImage.Save(storePreviewPath);
//var image = SKBitmap.Decode(_fileStorePath);
////设置图片新的size
//var newImg = image.Resize(new SKSizeI(50, 50), SKFilterQuality.Medium);
//using var fs = new FileStream(storePreviewPath, FileMode.Create);
//newImg.Encode(fs, SKEncodedImageFormat.Png, 100);
//fs.Flush();
//var image = NetVips.Image.NewFromFile(_fileStorePath);
//var newImg = image.Resize(0.5);
//newImg.WriteToFile(storePreviewPath);
//var image = NetVips.Image.NewFromFile(_fileStorePath);
//var newImg = image.ThumbnailImage(500);
//newImg.WriteToFile(_fileStorePath);
}
}
}

View File

@ -0,0 +1,27 @@

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
namespace IRaCIS.Core.Application.Helper;
public static class ImageResizeHelper
{
public static void ResizeSave(string filePath, string? fileStorePath)
{
fileStorePath = fileStorePath ?? filePath + ".preview.jpeg";
using (var image = SixLabors.ImageSharp.Image.Load(filePath))
{
image.Mutate(x => x.Resize(500, 500));
image.Save(fileStorePath);
}
}
}

View File

@ -82,14 +82,18 @@
<PackageReference Include="MimeKit" Version="3.2.0" />
<PackageReference Include="MiniExcel" Version="1.26.1" />
<PackageReference Include="My.Extensions.Localization.Json" Version="3.0.0" />
<PackageReference Include="NetVips" Version="2.1.0" />
<PackageReference Include="NetVips.Native" Version="8.12.2" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Nito.AsyncEx" Version="5.1.2" />
<PackageReference Include="Panda.DynamicWebApi" Version="1.2.0" />
<PackageReference Include="Quartz" Version="3.4.0" />
<PackageReference Include="SharpCompress" Version="0.31.0" />
<PackageReference Include="SixLabors.ImageSharp" Version="2.1.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.3.0" />
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.2" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="6.3.0" />
<PackageReference Include="System.Drawing.Common" Version="6.0.0" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.17.0" />
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.2.18" />
<PackageReference Include="UAParser" Version="3.1.47" />

View File

@ -20,6 +20,8 @@ namespace IRaCIS.Core.Application.Contracts
public string FullFilePath { get; set; } = string.Empty;
public string PreviewPath => "/Common/LocalFilePreview?relativePath=" + Path;
}

View File

@ -17,6 +17,8 @@ namespace IRaCIS.Core.Application.Contracts
public List<NoneDicomStudyFileView> NoneDicomStudyFileList { get; set; } = new List<NoneDicomStudyFileView>();
public List<string> NoneDicomStudyPreviewList=> NoneDicomStudyFileList.Select(t=> t.PreviewPath).ToList();
}
///<summary>NoneDicomStudyQuery 列表查询参数模型</summary>

View File

@ -14,10 +14,13 @@ using IRaCIS.Core.Application.Service.Inspection.DTO;
using Nito.AsyncEx;
using IRaCIS.Application.Interfaces;
using IRaCIS.Core.Infrastructure;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Authorization;
using System.Drawing;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp;
using IRaCIS.Core.Application.Helper;
namespace IRaCIS.Core.Application.Contracts
{
@ -212,37 +215,7 @@ namespace IRaCIS.Core.Application.Contracts
return await _repository.Where<NoneDicomStudyFile>(t => t.NoneDicomStudy.SubjectVisitId == subjectVisitId).ProjectTo<NoneDicomStudyFileView>(_mapper.ConfigurationProvider, new { token = _userInfo.UserToken }).ToListAsync();
}
[AllowAnonymous]
[HttpGet]
public async Task<FileContentResult> NoneDicomFilePreview(string relativePath)
{
var rootPath = Directory.GetParent(_hostEnvironment.ContentRootPath.TrimEnd('\\')).IfNullThrowException().FullName;
var _fileStorePath = Path.Combine(rootPath, relativePath.Replace('/', '\\').Trim('\\'));
//_logger.LogError(rootPath);
//_logger.LogError(_fileStorePath);
var storePreviewPath = _fileStorePath + ".preview.jpg";
//if (!File.Exists(storePreviewPath))
//{
using (var image = SixLabors.ImageSharp.Image.Load(await File.ReadAllBytesAsync(_fileStorePath)))
{
image.Mutate(x => x
.Resize(1000, 1000)
);
await image.SaveAsJpegAsync(storePreviewPath);
}
//}
return new FileContentResult(await File.ReadAllBytesAsync(storePreviewPath), "image/jpg");
}
/// <summary>
/// 上传非Dicom 文件 支持压缩包

View File

@ -19,9 +19,9 @@ namespace IRaCIS.Core.Domain.Models
public class SystemNotice : Entity, IAuditUpdate, IAuditAdd
{
public List<SystemNoticeUserType> NoticeUserTypeList { get; set; }
public List<SystemNoticeUserType> NoticeUserTypeList { get; set; }=new List<SystemNoticeUserType>();
public List<SystemNoticeUserRead> NoticeUserReadList { get; set; }
public List<SystemNoticeUserRead> NoticeUserReadList { get; set; }=new List<SystemNoticeUserRead>();
public User CreateUser { get; set; }