标签: memorystream

从MemoryStream png,gif创建WPF BitmapImage

我在创建一个BitmapImage来自MemoryStreamweb请求的png和gif字节时遇到了一些麻烦.这些字节似乎可以很好地下载,并且BitmapImage创建的对象没有问题,但是图像实际上并没有在我的UI上呈现.仅当下载的图像是png或gif类型时才会出现此问题(适用于jpeg).

以下是演示此问题的代码:

var webResponse = webRequest.GetResponse();
var stream = webResponse.GetResponseStream();
if (stream.CanRead)
{
    Byte[] buffer = new Byte[webResponse.ContentLength];
    stream.Read(buffer, 0, buffer.Length);

    var byteStream = new System.IO.MemoryStream(buffer);

    BitmapImage bi = new BitmapImage();
    bi.BeginInit();
    bi.DecodePixelWidth = 30;
    bi.StreamSource = byteStream;
    bi.EndInit();

    byteStream.Close();
    stream.Close();

    return bi;
}
Run Code Online (Sandbox Code Playgroud)

为了测试Web请求是否正确获取字节,我尝试了以下操作,将字节保存到磁盘上的文件,然后使用a UriSource而不是a 加载图像StreamSource,它适用于所有图像类型:

var webResponse = webRequest.GetResponse();
var stream = webResponse.GetResponseStream();
if (stream.CanRead)
{
    Byte[] buffer = new Byte[webResponse.ContentLength];
    stream.Read(buffer, 0, buffer.Length);

    string fName = "c:\\" + …
Run Code Online (Sandbox Code Playgroud)

wpf memorystream image webrequest bitmapimage

28
推荐指数
2
解决办法
6万
查看次数

我需要做StreamWriter.flush()吗?

假设这个C#代码:

using (MemoryStream stream = new MemoryStream())
{
    StreamWriter normalWriter = new StreamWriter(stream);
    BinaryWriter binaryWriter = new BinaryWriter(stream);

    foreach(...)
    {
        binaryWriter.Write(number);
        normalWriter.WriteLine(name); //<~~ easier to reader afterward.
    }

    return MemoryStream.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 我是否需要在循环内使用flush以保持顺序?
  2. 回归MemoryStream.ToArray()合法吗?我使用using-block作为约定,我担心它会搞砸了.

c# memorystream flush streamwriter

27
推荐指数
1
解决办法
3万
查看次数

将位图保存到MemoryStream中

我应该分配内存还是只分配内存流的对象:这样可以吗?

MemoryStream memoryStream = new MemoryStream();
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)

如果我需要定义MemoryStream大小,我如何从Bitmap获取它?

c# memorystream bitmap

26
推荐指数
2
解决办法
6万
查看次数

.NET MemoryStream - 我应该设置容量吗?

这可能是一个非常简单的问题,我认为我所追求的是宣布新MemoryStream的最佳实践

以下2个样本有什么区别:

MemoryStream myStream = new MemoryStream(0x10000);

要么

MemoryStream myStream = new MemoryStream();

显然,我知道第一个例子设置了流的初始容量.但是,这两者都具有可自动调整大小的容量.

我有什么理由为什么我应该使用一种方法而不是另一种方法?

.net memorystream

24
推荐指数
2
解决办法
1万
查看次数

使用StreamWriter写入MemoryStream将返回空

我不确定我做错了什么,看过很多例子,但似乎无法让这个工作.

public static Stream Foo()
{
    var memStream = new MemoryStream();
    var streamWriter = new StreamWriter(memStream);

    for (int i = 0; i < 6; i++)
        streamWriter.WriteLine("TEST");

    memStream.Seek(0, SeekOrigin.Begin);
    return memStream;
}
Run Code Online (Sandbox Code Playgroud)

我正在对这个方法进行一个简单的测试,试图让它通过,但无论如何,我的收集计数为0.

[Test]
public void TestStreamRowCount()
{
    var stream = Foo();

    using (var reader = new StreamReader(stream))
    {
        var collection = new List<string>();
        string input;

        while ((input = reader.ReadLine()) != null)
            collection.Add(input);

        Assert.AreEqual(6, collection.Count);
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:我在上面修改了一些语法而没有在Test方法中进行编译.更重要的是第一种似乎返回空流的方法(我的reader.ReadLine()总是读取一次).不确定我做错了什么.谢谢.

c# memorystream streamwriter

24
推荐指数
3
解决办法
4万
查看次数

让PdfStamper使用MemoryStreams(c#,itextsharp)

我找到了重新编写旧代码的方法,这些代码将PDF文件签名为新文件,这标志着来自Web服务的MemoryStreams(字节数组).简单吧?那是昨天.今天我无法让它发挥作用.

这是旧代码,它使用FileStreams并且它可以工作:

    public static string OldPdfSigner(PdfReader pdfReader, string destination, string password, string reason, string location, string pathToPfx)
    {
        using (FileStream pfxFile = new FileStream(pathToPfx, FileMode.Open, FileAccess.Read))
        {
            ...

            using (PdfStamper st = PdfStamper.CreateSignature(pdfReader, new FileStream(destination, FileMode.Create, FileAccess.Write), '\0'))
            {
                PdfSignatureAppearance sap = st.SignatureAppearance;
                sap.SetCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);
                sap.Reason = reason;
                sap.Location = location;
                return destination;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

下面是我自己重做的内容,它抛出System.ObjectDisposedException:无法访问已关闭的Stream.

    public static byte[] PdfSigner(PdfReader pdfReader, string password, string reason, string location, string pathToPfx)
    {
        using (FileStream pfxFile = new FileStream(pathToPfx, FileMode.Open, …
Run Code Online (Sandbox Code Playgroud)

c# pdf memorystream itext pdfstamper

22
推荐指数
1
解决办法
2万
查看次数

StreamWriter写入MemoryStream

我的印象是,当你调用Flush()StreamWriter对象时,它会写入底层流,但显然我的代码不是这种情况.

而不是写入我的文件,它只会写什么.我出错的任何想法?

    public FileResult DownloadEntries(int id)
    {
        Competition competition = dataService.GetCompetition(id);
        IQueryable<CompetitionEntry> entries = dataService.GetAllCompetitionEntries().Where(e => e.CompetitionId == competition.CompetitionId);

        MemoryStream stream = new MemoryStream();
        StreamWriter csvWriter = new StreamWriter(stream, Encoding.UTF8);

        csvWriter.WriteLine("First name,Second name,E-mail address,Preferred contact number,UserId\r\n");

        foreach (CompetitionEntry entry in entries)
        {
            csvWriter.WriteLine(String.Format("{0},{1},{2},{3},{4}",
                entry.User.FirstName,
                entry.User.LastName,
                entry.User.Email,
                entry.User.PreferredContactNumber,
                entry.User.Id));
        }

        csvWriter.Flush();

        return File(stream, "text/plain", "CompetitionEntries.csv");
    }
Run Code Online (Sandbox Code Playgroud)

.net c# memorystream stream

21
推荐指数
2
解决办法
6万
查看次数

在c#wpf中从Memorystream获取Imagesource

如何使用c#ImageSourceMemoryStreamWPF中获取?或转换MemoryStream,以ImageSource显示它在WPF的形象?

c# wpf memorystream imagesource

19
推荐指数
1
解决办法
2万
查看次数

MemoryStream.Read不会将字节复制到缓冲区 - c#

我真的没有得到它,这让我疯狂.我有这四行:

Image img = Image.FromFile("F:\\Pulpit\\soa.bmp");
MemoryStream imageStream = new MemoryStream();
img.Save(imageStream, ImageFormat.Bmp);
byte[] contentBuffer = new byte[imageStream.Length];
imageStream.Read(contentBuffer, 0, contentBuffer.Length);
Run Code Online (Sandbox Code Playgroud)

调试时我可以看到imageStream中的字节值.在imageStream之后.我检查contentBuffer的内容,我只看到255个值.我不明白为什么会这样?在这几行中没有什么可错的!如果有人能帮助我,我将不胜感激!谢谢,agnieszka

c# buffer memorystream image

18
推荐指数
5
解决办法
2万
查看次数

流不可读错误

我在声明中收到"Stream is not readable"的消息:

using (StreamReader sr = new StreamReader(ms))
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这里发布的提示但没有成功.谢谢您的帮助.

这是我的代码:

XmlSerializer xmlSerializer = new XmlSerializer(typeof(Conflict));
//Serialize Conflicts array to memorystream as XML
using (MemoryStream ms = new MemoryStream())
{
    using (StreamWriter sw = new StreamWriter(ms))
    {
        foreach (Conflict ct in Conflicts)      
            xmlSerializer.Serialize(sw, ct);

        sw.Flush(); //Site tip
        ms.Position = 0;  //Site tip
    }
    //Retrieve memory stream to string
    using (StreamReader sr = new StreamReader(ms))
    {
        string conflictXml = String.Format(CultureInfo.InvariantCulture, "{0}</NewDataSet>",
Run Code Online (Sandbox Code Playgroud)

c# memorystream xml-serialization

18
推荐指数
1
解决办法
4万
查看次数