任何人都可以建议我如何将图像转换为字节数组,反之亦然?
如果有人有一些代码样本来帮助我,那就太好了.
我正在开发一个WPF应用程序并使用流阅读器.
我有一个图像的字节数组(存储在数据库中).我想创建一个Image对象,创建几个不同大小的图像并将它们存储回数据库(将其保存回字节数组).
我并不担心数据库部分或调整大小.但有没有一种简单的方法来加载Image对象而不将文件保存到文件系统,然后在我调整大小时将其放回到字节数组中?如果可以的话,我想在记忆中做到这一点.
Something like:
Image myImage = new Image(byte[]);
or
myImage.Load(byte[]);
Run Code Online (Sandbox Code Playgroud) 我有一个byte []数组,它读取一个本地文件,然后我将它分配给一个单一的Texture2D.使用im.sprite = Sprite.Create()函数分配图像.
我遇到的问题是我需要从字节数组中检测图像的宽度和高度,这样我就可以调整纹理大小,避免在运行时在统一场景上进行图像拉伸.
您知道如何使用库或某种函数来创建图像字节数组中的临时图像,然后在创建精灵并应用纹理之前查看所需的宽度和高度吗?
我已经在Java中找到了解决方案,但是通过适应c#无法实现它的工作.
如何byte[]在.NET Core中将其转换为图像?
我发现了:
using (var ms = new MemoryStream(byteArrayIn))
{
return Image.FromStream(ms);
}
Run Code Online (Sandbox Code Playgroud)
但似乎Image不存在.NET-Core。
我在从base64编码的字节数组中用C#创建一个Image/Bitmap对象时遇到了麻烦.
这是我正在处理的事情:
我有一个前端,用户可以裁剪图像.当用户通过a选择图像时input[type=file],我的javascript代码使用HTML5的FileReader将DataUrl(base64字符串)保存到a hidden field,与作物坐标和尺寸以及其中的所有其他内容一起发布form.
精华:
base64数据,如果你想测试自己:
http://kristianbak.com/test_image.txt
imageDatabyte[] imageBytes = Convert.FromBase64String(imageData.EncodeTo64());EncodeTo64扩展方法:
public static string EncodeTo64(this String toEncode)
{
var toEncodeAsBytes = Encoding.ASCII.GetBytes(toEncode);
var returnValue = Convert.ToBase64String(toEncodeAsBytes);
return returnValue;
}
Run Code Online (Sandbox Code Playgroud)
将base64字符串转换为字节数组后,我使用以下命令将字节读入内存MemoryStream:
using (var imageStream = new MemoryStream(imageBytes, false))
{
Image image = Image.FromStream(imageStream); //ArgumentException: Parameter is not valid.
}
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下变化:
一个)
using (var imageStream = new MemoryStream(imageBytes))
{
Bitmap image = new Bitmap(imageStream); //ArgumentException: Parameter is not …Run Code Online (Sandbox Code Playgroud) 我正在使用第三方 DLL,它具有 RGB 缓冲区作为参数。
我使用以下代码读取 RGB 缓冲区Bitmap:
private byte[] GetBGRValues(Bitmap bmp)
{
// Lock the bitmap's bits.
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
// Get the address of the first line.
IntPtr ptr = bmpData.Scan0;
// Declare an array to hold the bytes of the bitmap.
int bytes = Math.Abs(bmpData.Stride) * bmp.Height;
byte[] rgbValues = new byte[bytes];
// Copy the RGB values into the array.
System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
bmp.UnlockBits(bmpData); …Run Code Online (Sandbox Code Playgroud) 我正在将我的图像转换为二进制数据并以二进制格式存储:
byte[] bytes = System.IO.File.ReadAllBytes(@"F:\Image\Img1.jpg");
Run Code Online (Sandbox Code Playgroud)
我存储图像的数据库字段是:Varbinary(Max)
现在我正从我的数据库中读取这个二进制数据,我正在获取二进制数据.
我想在此Div标签中显示图像.
这是我的观点:
<div class="Image-ad"></div>
Run Code Online (Sandbox Code Playgroud)
我的课:
public class ImageAdd
{
public Guid ImageAddId { get; set; }
public byte[] Image { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的控制器:
public ActionResult Index()
{
var data=db.ImageAdd.ToList();
return View(db);
}
Run Code Online (Sandbox Code Playgroud)
如何将此二进制数据转换为图像并在Div标签中显示???
我在.Net 4.6.2中有一个运行良好的项目,该项目大量使用了将byte []转换为Bitmap的方法。
public static Bitmap ByteArrayToImage(byte[] source)
{
TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));
return (Bitmap)tc.ConvertFrom(source);
}
Run Code Online (Sandbox Code Playgroud)
但是,自那时以来,我已经将项目升级到.Net Core 2.1,并且这不再起作用。我读过,有些人有问题,但是努力寻找解决方法。
TypeConverter无法从System.Byte []转换
2.1中是否有办法实现这种转换?看起来https://github.com/SixLabors/ImageSharp可能有用,但是当我在Nuget中搜索它时,没有任何结果。