【问题标题】:Generating a Random JPG Image From Console Application从控制台应用程序生成随机 JPG 图像
【发布时间】:2014-07-09 23:42:44
【问题描述】:

我有一个 API,它采用大小为 80x20(JPG、PNG 或 GIF)的图像的 base64string 并存储在数据库中。为了测试这个 API,我必须生成一个随机的 base64 字符串,它可以在解码时转换成真实的图像。

我找到了示例here,它似乎适用于 WPF 应用程序。如何将其用于控制​​台应用程序?

【问题讨论】:

  • 有什么问题?只需添加对System.Drawing 的引用即可。
  • 好吧,只有随机 Base64 字符串的子集可以转换为 Image。也许您实际上想创建一个随机图像并将其转换为 Base64 字符串。如果您真的需要图像是随机的,您最好定义您的意思,这可能会使您的测试难以重现。您应该在问题中展示您的努力,并定义您的具体问题/问题/要点是什么。
  • 来自 OP stackoverflow.com/questions/20981467/… 的代码应该在控制台应用程序中工作。

标签: c# .net image random bytearray


【解决方案1】:

应该有多种方法。以下怎么样:

public static string GenerateBase64ImageString()
{
    // 1. Create a bitmap
    using (Bitmap bitmap = new Bitmap(80, 20, PixelFormat.Format24bppRgb))
    {
        // 2. Get access to the raw bitmap data
        BitmapData data = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.WriteOnly, bitmap.PixelFormat);

        // 3. Generate RGB noise and write it to the bitmap's buffer.
        // Note that we are assuming that data.Stride == 3 * data.Width for simplicity/brevity here.
        byte[] noise = new byte[data.Width * data.Height * 3];
        new Random().NextBytes(noise);
        Marshal.Copy(noise, 0, data.Scan0, noise.Length);

        bitmap.UnlockBits(data);

        // 4. Save as JPEG and convert to Base64
        using (MemoryStream jpegStream = new MemoryStream())
        {
            bitmap.Save(jpegStream, ImageFormat.Jpeg);
            return Convert.ToBase64String(jpegStream.ToArray());
        }
    }
}

请务必添加对 System.Drawing 的引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2016-01-03
    • 1970-01-01
    • 2012-08-06
    • 2011-01-22
    • 1970-01-01
    相关资源
    最近更新 更多