将文本文件转换为图像以便在.NET中预览
我有以下情况,我需要将文本文件(文本文件流)转换为小图像,然后将它们存储在数据库(SQL Server)中,以便以后可以在“预览”屏幕中显示它们。有人对如何做到这一点有什么建议吗?尤其是将文本文件转换为图像?我认为将文本文件转换为图像不是解决问题的最佳方法。话虽如此,这里有一些示例代码可以帮助您开始将文本文件转换为图像以便在.NET中预览,.net,sql-server,.net,Sql Server,我有以下情况,我需要将文本文件(文本文件流)转换为小图像,然后将它们存储在数据库(SQL Server)中,以便以后可以在“预览”屏幕中显示它们。有人对如何做到这一点有什么建议吗?尤其是将文本文件转换为图像?我认为将文本文件转换为图像不是解决问题的最佳方法。话虽如此,这里有一些示例代码可以帮助您开始 using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
/// <summary>
/// A utility class to generate images from a string.
/// </summary>
public static class ImageMaker
{
private static readonly ImageCodecInfo MyCodecInfo = GetEncoderInfo("image/jpeg");
private static readonly EncoderParameters MyEncodeParameters = new EncoderParameters(1);
static ImageMaker()
{
// Specify the quality for generated images.
MyEncodeParameters.Param[0] = new EncoderParameter(Encoder.Quality, 95L);
}
/// <summary>
/// Takes in a string and returns an image of that text.
/// </summary>
/// <param name="text">Text to put on an image.</param>
/// <returns>Image instance.</returns>
public static Image DrawText(string text)
{
// Create a bitmap to store the result.
var destImage = new Bitmap(500, 700);
// Create a graphic to draw the text on.
Graphics graphic = Graphics.FromImage(destImage);
graphic.FillRectangle(new SolidBrush(Color.White), 0, 0, destImage.Width, destImage.Height);
graphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
var fontFamily = new FontFamily("Arial");
var textRectangle = new Rectangle(0, 0, destImage.Width, destImage.Height);
var format = new StringFormat();
float emSize = graphic.DpiY * 10 / 72;
// Create text path.
var path = new GraphicsPath();
path.AddString(text, fontFamily, (int)FontStyle.Regular, emSize, textRectangle, format);
// Write path to graphic.
var fillBrush = new SolidBrush(Color.FromKnownColor(KnownColor.Black));
graphic.FillPath(fillBrush, path);
return destImage;
}
/// <summary>
/// Writes image to a stream.
/// </summary>
/// <param name="image">Image instance.</param>
/// <param name="stream">Stream instance.</param>
public static void WriteToStream(Image image, Stream stream)
{
image.Save(stream, MyCodecInfo, MyEncodeParameters);
}
/// <summary>
/// Gets codec info for the specified MIME type.
/// </summary>
/// <param name="mimeType">MIME type name.</param>
/// <returns>ImageCodecInfo instance or null if no matching info was found.</returns>
private static ImageCodecInfo GetEncoderInfo(string mimeType)
{
ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
return encoders.FirstOrDefault(t => t.MimeType == mimeType);
}
}
干杯
PS-lipsum文本取自;) 我不认为将文本文件转换为图像是解决问题的最佳方法。话虽如此,这里有一些示例代码可以帮助您开始
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
/// <summary>
/// A utility class to generate images from a string.
/// </summary>
public static class ImageMaker
{
private static readonly ImageCodecInfo MyCodecInfo = GetEncoderInfo("image/jpeg");
private static readonly EncoderParameters MyEncodeParameters = new EncoderParameters(1);
static ImageMaker()
{
// Specify the quality for generated images.
MyEncodeParameters.Param[0] = new EncoderParameter(Encoder.Quality, 95L);
}
/// <summary>
/// Takes in a string and returns an image of that text.
/// </summary>
/// <param name="text">Text to put on an image.</param>
/// <returns>Image instance.</returns>
public static Image DrawText(string text)
{
// Create a bitmap to store the result.
var destImage = new Bitmap(500, 700);
// Create a graphic to draw the text on.
Graphics graphic = Graphics.FromImage(destImage);
graphic.FillRectangle(new SolidBrush(Color.White), 0, 0, destImage.Width, destImage.Height);
graphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
var fontFamily = new FontFamily("Arial");
var textRectangle = new Rectangle(0, 0, destImage.Width, destImage.Height);
var format = new StringFormat();
float emSize = graphic.DpiY * 10 / 72;
// Create text path.
var path = new GraphicsPath();
path.AddString(text, fontFamily, (int)FontStyle.Regular, emSize, textRectangle, format);
// Write path to graphic.
var fillBrush = new SolidBrush(Color.FromKnownColor(KnownColor.Black));
graphic.FillPath(fillBrush, path);
return destImage;
}
/// <summary>
/// Writes image to a stream.
/// </summary>
/// <param name="image">Image instance.</param>
/// <param name="stream">Stream instance.</param>
public static void WriteToStream(Image image, Stream stream)
{
image.Save(stream, MyCodecInfo, MyEncodeParameters);
}
/// <summary>
/// Gets codec info for the specified MIME type.
/// </summary>
/// <param name="mimeType">MIME type name.</param>
/// <returns>ImageCodecInfo instance or null if no matching info was found.</returns>
private static ImageCodecInfo GetEncoderInfo(string mimeType)
{
ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
return encoders.FirstOrDefault(t => t.MimeType == mimeType);
}
}
干杯
PS-lipsum文本取自;) 关于文本文件,你能告诉我们什么?它们是否包含Base64编码的JPEG图像?只是文本,我想将其转换,以便您可以将第一页视为图像,如屏幕截图。关于文本文件,您能告诉我们什么?它们是否包含Base64编码的JPEG图像?只是文本,我想转换它,以便您可以将第一页视为图像,如屏幕截图。好的,我将尝试代码,但您认为解决此问题的更好方法是什么?如果只显示文本,然后可能从数据库中获取文本片段,并简单地在某种工具提示窗口中显示它。好的,我将尝试代码,但您认为解决此问题的更好方法是什么?如果只显示文本,然后可能从数据库中获取该文本的片段,并简单地在某种工具提示窗口中显示它。