.net core将图片转为base64保存到数据库
时间: 2023-08-01 22:11:15 浏览: 106
在 .NET Core 中,可以使用以下代码将图片转换为 Base64 字符串:
```csharp
string imagePath = "path/to/image.jpg";
byte[] imageBytes = System.IO.File.ReadAllBytes(imagePath);
string base64String = Convert.ToBase64String(imageBytes);
```
然后,可以将 `base64String` 存储到数据库中。如果数据库字段类型为字符串,则直接将其存储即可。如果字段类型为二进制,则需要将 Base64 字符串转换为字节数组,再存储到数据库中。
以下是将 Base64 字符串转换为字节数组的代码:
```csharp
byte[] imageBytes = Convert.FromBase64String(base64String);
```
相关问题
.net core将图片压缩保存到数据库
可以使用C#的System.Drawing命名空间中的Image类和Graphics类来进行图片的压缩和保存。下面是一个示例代码:
```csharp
// 读取原始图片
var originalImage = Image.FromFile("original.jpg");
// 创建目标尺寸的空白图片
var compressedImage = new Bitmap(800, 600);
// 将原始图片绘制到目标图片上并进行压缩
using (var graphics = Graphics.FromImage(compressedImage))
{
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.DrawImage(originalImage, 0, 0, 800, 600);
}
// 将压缩后的图片转换为字节数组
var stream = new MemoryStream();
compressedImage.Save(stream, ImageFormat.Jpeg);
var compressedBytes = stream.ToArray();
// 将字节数组保存到数据库
using (var db = new DbContext())
{
var entity = new ImageEntity { Data = compressedBytes };
db.Add(entity);
db.SaveChanges();
}
```
这个示例代码将原始图片压缩到了800x600的大小,并将压缩后的图片保存到了数据库中。你可以根据实际需求调整压缩后的图片尺寸和压缩质量。
.net core 上传图片用 base64 还是文件流
在 .NET Core 中,上传图片时可以使用 Base64 编码或文件流两种方式。具体使用哪种方式,取决于你的应用场景和需求。
使用 Base64 编码上传图片的优点是可以直接将图片数据编码成字符串格式,方便网络传输和存储。缺点是因为要将图片数据编码成字符串,所以会占用更多的内存和网络带宽,对性能和响应速度有一定的影响。而使用文件流上传图片则可以避免这个问题,因为它直接将图片数据写入到文件流中,不需要进行编码和解码操作,能够更快地完成上传操作。
以下是使用 Base64 编码上传图片的代码示例:
```
[HttpPost("upload-base64")]
public IActionResult UploadImageBase64([FromBody] UploadImageRequest request)
{
var base64String = request.Base64String;
var imageData = Convert.FromBase64String(base64String);
// 将图片数据保存到文件中
var fileName = Path.Combine(_env.ContentRootPath, "uploads", request.FileName);
System.IO.File.WriteAllBytes(fileName, imageData);
return Ok();
}
```
以下是使用文件流上传图片的代码示例:
```
[HttpPost("upload-stream")]
public async Task<IActionResult> UploadImageStream(IFormFile file)
{
if (file == null || file.Length == 0)
{
return BadRequest("Invalid file");
}
// 将图片数据保存到文件中
var fileName = Path.Combine(_env.ContentRootPath, "uploads", file.FileName);
using (var stream = new FileStream(fileName, FileMode.Create))
{
await file.CopyToAsync(stream);
}
return Ok();
}
```
需要注意的是,无论是使用 Base64 编码还是文件流上传图片,都需要注意图片的大小和格式,避免上传过大或不支持的图片文件,影响应用的性能和可用性。