我需要使用以下条件生成数以千计的随机但唯一的图像文件(.jpeg / tiff / png)并将其放入所选的文件夹中:
生成的文件具有给定的分辨率,大小(例如每个100mb),但可以是任何虚拟随机颜色/图案等...
有什么方法可以使用c#或任何其他编程技术生成这个?
答案 0 :(得分:0)
这是我在一个项目中使用的代码,用于在中间快速生成带有随机“白噪声”和指定文本(也可以是随机)的jpeg图像:
private static void GenerateDummyJpegAt(string outputPath, string nameToEmbed, int width, int height) {
using (var bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb)) {
BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.WriteOnly, bmp.PixelFormat);
byte[] noise = new byte[data.Width*data.Height*3];
new Random().NextBytes(noise); // note that if you do that in a loop or from multiple threads - you may want to store this random in outside variable
Marshal.Copy(noise, 0, data.Scan0, noise.Length);
bmp.UnlockBits(data);
using (var g = Graphics.FromImage(bmp)) {
// draw white rectangle in the middle
g.FillRectangle(Brushes.White, 0, height/2 - 20, width, 40);
var fmt = new StringFormat();
fmt.Alignment = StringAlignment.Center;
fmt.LineAlignment = StringAlignment.Center;
// draw text inside that rectangle
g.DrawString(nameToEmbed, SystemFonts.DefaultFont, Brushes.Black, new RectangleF(0, 0, bmp.Width, bmp.Height), fmt);
}
using (var fs = File.Create(outputPath)) {
bmp.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
用法:
GenerateDummyJpegAt(@"G:\tmp\dummy.jpg", "Some random string", 800, 600);
结果: