Ejemplo n.º 1
0
        public void GetStringSha1Hash_Test()
        {
            var expected1 = "4a48f2d80b881e9ac7d607f23412823e9305e433";
            var sha1_1    = ShaUtil.GetHex16StringSha1Hash("HelloChinese");

            Assert.Equal(expected1, sha1_1, ignoreCase: true);

            var expected2 = "Skjy2AuIHprH1gfyNBKCPpMF5DM=";
            var sha1_2    = ShaUtil.GetBase64StringSha1Hash("HelloChinese");

            Assert.Equal(expected2, sha1_2, ignoreCase: true);
        }
Ejemplo n.º 2
0
        /// <summary>获取图片的二进制数据
        /// </summary>
        /// <param name="imagePath">图片保存路径</param>
        /// <param name="resizeParameter">图片尺寸调整参数</param>
        /// <param name="lastWriteTimeUtc">最后修改时间</param>
        /// <returns></returns>
        public async Task <byte[]> GetImageData(string imagePath, ResizeParameter resizeParameter, DateTime lastWriteTimeUtc)
        {
            try
            {
                var key      = $"{imagePath}{resizeParameter.ToString()}{lastWriteTimeUtc.ToString("yyyy-MM-dd HH:mm:ss")}";
                var cacheKey = $"Image:{ShaUtil.GetHex16StringSha1Hash(key)}";

                byte[] imageBytes;
                if (_option.EnableImageCache)
                {
                    var imageCacheItem = await _imageCache.GetAsync(cacheKey);

                    if (imageCacheItem != null)
                    {
                        return(imageCacheItem.Data);
                    }
                }
                //图片操作
                var image = Image.FromFile(imagePath);
                //对图片进行相应的操作,放大等
                Image resizeImage = null;
                if (resizeParameter.Mode == ResizeMode.Zoom)
                {
                    resizeImage = ImageResize.ImageResizer.Zoom(image, resizeParameter);
                }
                else if (resizeParameter.Mode == ResizeMode.Crop)
                {
                    //图片裁剪
                    resizeImage = ImageResize.ImageResizer.Crop(image, resizeParameter);
                }
                var imageFormat = ImageUtil.GetImageFormatByFormatName(resizeParameter.Format);
                imageBytes = ImageHelper.ImageCompressToBytes(resizeImage, resizeParameter.Quality, imageFormat);
                image.Dispose();

                //只有开启图片缓存情况下,才会对图片再次进行缓存
                if (_option.EnableImageCache)
                {
                    //将图片缓存
                    await _imageCache.SetAsync(cacheKey, new ImageCacheItem(imageBytes), new DistributedCacheEntryOptions()
                    {
                        SlidingExpiration = TimeSpan.FromSeconds(_option.ImageCacheSlidingExpirationSeconds)
                    });
                }
                return(imageBytes);
            }
            catch (Exception ex)
            {
                _logger.LogError("Resize图片出现错误,{0}", ex.Message);
            }
            return(default);