Here are the examples of the csharp api System.IO.Stream.WriteASCIIString(string) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
1 Examples
19
Source : ImageFormats.cs
with GNU General Public License v3.0
from arklumpus
with GNU General Public License v3.0
from arklumpus
public unsafe static void SavePNG(byte* image, int width, int height, bool hasAlpha, Stream fs, FilterModes filter, int threadCount = 0)
{
if (threadCount == 0)
{
threadCount = filter == FilterModes.Adaptive ? Math.Max(1, Math.Min(width / 600, Environment.ProcessorCount - 2)) : 1;
}
//Header
fs.Write(new byte[] { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A }, 0, 8);
//IHDR chunk
fs.WriteInt(13);
using (MemoryStream ihdr = new MemoryStream(13))
{
ihdr.WriteASCIIString("IHDR");
ihdr.WriteInt(width);
ihdr.WriteInt(height);
ihdr.WriteByte(8); //Bit depth
if (hasAlpha)
{
ihdr.WriteByte(6); //Colour type
}
else
{
ihdr.WriteByte(2); //Colour type
}
ihdr.WriteByte(0); //Compression method
ihdr.WriteByte(0); //Filter method
ihdr.WriteByte(0); //Interlace
ihdr.Seek(0, SeekOrigin.Begin);
ihdr.CopyTo(fs);
fs.WriteUInt(CRC32.ComputeCRC(ihdr));
}
//IDAT chunk
IntPtr filteredImage;
if (threadCount > 1)
{
filteredImage = FilterImageData(image, width, height, hasAlpha ? 4 : 3, FilterModes.Adaptive, threadCount);
}
else
{
filteredImage = FilterImageData(image, width, height, hasAlpha ? 4 : 3, FilterModes.Adaptive);
}
using (MemoryStream compressedImage = StreamUtils.ZLibCompress(filteredImage, height * (width * (hasAlpha ? 4 : 3) + 1)))
{
compressedImage.Seek(0, SeekOrigin.Begin);
fs.WriteUInt((uint)compressedImage.Length);
fs.WriteASCIIString("IDAT");
compressedImage.Seek(0, SeekOrigin.Begin);
compressedImage.CopyTo(fs);
fs.WriteUInt(CRC32.ComputeCRC(compressedImage.GetBuffer(), (int)compressedImage.Length, new byte[] { 73, 68, 65, 84 }));
}
Marshal.FreeHGlobal(filteredImage);
//IEND chunk
fs.WriteInt(0);
fs.WriteASCIIString("IEND");
fs.Write(new byte[] { 0xAE, 0x42, 0x60, 0x82 }, 0, 4);
}