从控制台应用程序中生成随机的JPG图像

5
我有一个API,它接收大小为80x20的图像的base64字符串(可以是JPG、PNG或GIF格式),并将其存储在数据库中。为了测试这个API,我需要生成一个随机的base64字符串,当解码后可以转换成真实的图像。
我找到了一个例子(这里),它似乎适用于WPF应用程序。如何在控制台应用程序中使用相同的方法?

问题是什么?只需添加对“System.Drawing”的引用即可。 - leppie
1
只有随机的Base64字符串的子集可以转换为图像。也许你实际上想要创建一个随机的图像并将其转换为Base64字符串。如果你真的需要图像是随机的,最好定义一下你的意思,这可能会使你的测试难以重现。你应该在问题中展示你的努力,并定义你的具体问题/问题/观点。 - Jodrell
OP的代码http://stackoverflow.com/questions/20981467/how-to-create-a-byte-array-that-contains-a-real-image应该在控制台应用程序中运行。 - Matas Vaitkevicius
1个回答

5
以下方法都可行。如下所示:
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的引用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接