Как создать изображение из растрового изображения и сохранить его - PullRequest
0 голосов
/ 08 июня 2011

Вот пример кода, который я пытаюсь заставить работать, но пока не повезло.

            Bitmap bitmap = new Bitmap((Stream)Cache["images"]);
            Graphics g = Graphics.FromImage(bitmap);

            StringFormat strFrmt = new StringFormat();
            strFrmt.Alignment = StringAlignment.Center;

            SolidBrush btmForeColor = new SolidBrush(Color.Green);
            SolidBrush btmBackColor = new SolidBrush(Color.Black);

            Font btmFont = new Font("Verdana",7);
            SizeF textSize = new SizeF();
            textSize = g.MeasureString("Copyright", btmFont);

            float x = ((float) bitmap.Width - textSize.Width - 3);
            float y = ((float) bitmap.Height - textSize.Height - 3);
            float w = ((float) x + textSize.Width);
            float h = ((float) y + textSize.Height);

            RectangleF textArea = new RectangleF(x,y,w,h);
            g.FillRectangle(btmBackColor,textArea);

            g.DrawString("Copyright",btmFont,btmForeColor,textArea);
            btmForeColor.Dispose();
            btmBackColor.Dispose();
            btmFont.Dispose();
            g.Dispose();

Как видно из кода, я получаю Stream и создаю растровое изображение, затем делаю некоторые изменения в растровом изображении, и теперь я хочу сохранить свой растровый объект, но не могу понять, как, я провел некоторое исследование в Интернете, но все примеры / статьи / сообщения на форуме были для случаев, когда у вас есть какой-либо файл изображения на сервере, и вы хотите внести изменения, в моем случае у меня просто есть поток и я хочу сохранить растровый объект по определенному пути , Как я могу это сделать ? Мы будем благодарны за любую помощь.

Ответы [ 2 ]

2 голосов
/ 08 июня 2011

Конечно, это просто bitmap.save?или одна из его перегрузок?g действительно рисует на растровом изображении.

** update

        Bitmap bitmap = new Bitmap(@"C:\Users\mike\Pictures\Panasonic\P1000016.jpg");
        Graphics g = Graphics.FromImage(bitmap);

        StringFormat strFrmt = new StringFormat();
        strFrmt.Alignment = StringAlignment.Center;

        SolidBrush btmForeColor = new SolidBrush(Color.Green);
        SolidBrush btmBackColor = new SolidBrush(Color.Black);

        Font btmFont = new Font("Verdana", 90);
        SizeF textSize = new SizeF();
        textSize = g.MeasureString("Copyright", btmFont);

        float x = ((float)bitmap.Width - textSize.Width - 3);
        float y = ((float)bitmap.Height - textSize.Height - 3);
        float w = ((float)x + textSize.Width);
        float h = ((float)y + textSize.Height);

        RectangleF textArea = new RectangleF(x, y, w, h);
        g.FillRectangle(btmBackColor, textArea);

        g.DrawString("Copyright", btmFont, btmForeColor, textArea);
        btmForeColor.Dispose();
        btmBackColor.Dispose();
        btmFont.Dispose();
        g.Dispose();
        bitmap.Save(@"C:\Users\mike\Pictures\Panasonic\P1000016_0.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

это работает для меня, хотя пришлось увеличить размер шрифта.

0 голосов
/ 08 июня 2011

кажется, я нашел решение

var photoPath = Server.MapPath("~/" + AsyncFileUpload1.FileName);


            if (File.Exists(photoPath))
            {
                File.Delete(photoPath);
            }
using (var mainFile = File.Create(photoPath))
            {
                // dostuff()
                bitmap.Save(mainFile, image.RawFormat);

            }

Мне пришлось создать файл перед его сохранением. Спасибо тебе, Майк, за то, что ты со мной в этом, я очень ценю !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...