Я пытаюсь загрузить около 1000 изображений. Для этого я генерирую случайное число, преобразуя этот текст в изображение. После этого на кнопку нажмите, я загружаю это сгенерированное изображение. Это работает нормально. Теперь я хочу запустить этот цикл 1000 раз, чтобы загрузить тысячи изображений. Ниже код работает нормально, когда цикл работает один раз, но когда цикл работает 1000 раз, он не работает, как я ожидаю.скачать сгенерированные изображения автоматически несколько раз
Кроме того, я хочу изменить папку назначения, в которой должны быть загружены эти изображения. Как я могу это сделать?
Below if I change value of variable i to 1000, the output is not what I am expecting
public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { for (int i = 0; i < 1; i++) { CallBUttonClick(); }
} protected void Button1_Click(object sender, EventArgs e) { var s = GenerateRandomCode(); RandomImage ci = new RandomImage(s.ToString(), 300, 75); this.Response.Clear(); this.Response.ContentType = "image/jpeg"; Response.AppendHeader("Content-Disposition", "attachment; filename=downloadedFile.JPG"); ci.Image.Save(this.Response.OutputStream, ImageFormat.Jpeg); ci.Dispose(); } protected void CallBUttonClick() { Button1_Click(Button1, null); } private string GenerateRandomCode() { Random r = new Random(); string s = ""; for (int j = 0; j < 5; j++) { int i = r.Next(3); int ch; switch (i) { case 1: ch = r.Next(0, 9); s = s + ch.ToString(); break; case 2: ch = r.Next(65, 90); s = s + Convert.ToChar(ch).ToString(); break; case 3: ch = r.Next(97, 122); s = s + Convert.ToChar(ch).ToString(); break; default: ch = r.Next(97, 122); s = s + Convert.ToChar(ch).ToString(); break; } r.NextDouble(); r.Next(100, 1999); } return s; } }
Добавление RandomImage.cs класс файла
using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Drawing.Text; using System; public class RandomImage { //Default Constructor public RandomImage() { } //property public string Text { get { return this.text; } } public Bitmap Image { get { return this.image; } } public int Width { get { return this.width; } } public int Height { get { return this.height; } } //Private variable private string text; private int width; private int height; private Bitmap image; private Random random = new Random(); //Methods declaration public RandomImage(string s, int width, int height) { this.text = s; this.SetDimensions(width, height); this.GenerateImage(); } public void Dispose() { GC.SuppressFinalize(this); this.Dispose(true); } protected virtual void Dispose(bool disposing) { if (disposing) this.image.Dispose(); } private void SetDimensions(int width, int height) { if (width <= 0) throw new ArgumentOutOfRangeException("width", width, "Argument out of range, must be greater than zero."); if (height <= 0) throw new ArgumentOutOfRangeException("height", height, "Argument out of range, must be greater than zero."); this.width = width; this.height = height; } private void GenerateImage() { Bitmap bmp = new Bitmap(1, 1); Graphics graphics = Graphics.FromImage(bmp); Font font = new Font(FontFamily.GenericSansSerif, 28); SizeF stringSize = graphics.MeasureString(this.text, font); bmp = new Bitmap(bmp, (int)stringSize.Width+30, (int)stringSize.Height+30); graphics = Graphics.FromImage(bmp); graphics.DrawString(this.text, font, Brushes.White, 0, 0); font.Dispose(); graphics.Flush(); graphics.Dispose(); this.image = bmp; } }
Я добавил только значение 1000. Тогда u получит не выход, что я ожидаю. Вы можете использовать код в примерном приложении для проверки – Aakansha
В основном он добавляет «downloadFile.jpeg, attachment», «downloadFile (1) .jpeg, вложение» в качестве имени файла, и я не хочу редактировать имя переименования для 1000 iamges, которые скачан ... так что любой способ исправить имя файла, полученное при загрузке изображений, когда я больше 1 – Aakansha
Не могли бы вы обратиться к http://htmlrenderer.codeplex.com/ –