Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Картинка со случайным числом, защита от авторегистрации 
:(
    Опции темы
Levsha
  Дата 19.3.2006, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 30.9.2005

Репутация: нет
Всего: 4



Господа, интересует как создается такая защита от авторегистрации: генерация изображения со случайным числом или буквами.
Наверно подобная тема уже поднималась, но поиском ничего не нашел, так что если что заранее извиняюсь...
Спасибо.


--------------------
PM   Вверх
mr.DUDA
Дата 20.3.2006, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 5
Всего: 232



Рисуем картинку средствами GDI+, отдаём её клиенту через временный файл.


--------------------
user posted image
PM MAIL WWW   Вверх
Levsha
Дата 27.3.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 30.9.2005

Репутация: нет
Всего: 4



Я можно поподробней для чайника, что есть GDI+ ?
Если можно, дайте пример кода работы с GDI+


--------------------
PM   Вверх
mr.DUDA
Дата 27.3.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 5
Всего: 232



Пример из MSDN, где всё готовенькое:

Default.aspx
Код
<%@ Page Language="C#" %>
<%@ import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Drawing.Drawing2D" %>

<script runat="server">

    private void Page_Load(object sender, EventArgs e)
    {
        // Set the page's content type to JPEG files
        // and clear all response headers.
        Response.ContentType = "image/jpeg";
        Response.Clear();
    
        // Buffer response so that page is sent
        // after processing is complete.
        Response.BufferOutput = true;
    
        // Create a font style.
        Font rectangleFont = new Font(
            "Arial", 10, FontStyle.Bold);
    
        // Create integer variables.
        int height = 100;
        int width = 200;
    
        // Create a random number generator and create
        // variable values based on it.
        Random r = new Random();
        int x = r.Next(75);
        int a = r.Next(155);
        int x1 = r.Next(100);
    
        // Create a bitmap and use it to create a
        // Graphics object.
        Bitmap bmp = new Bitmap(
            width, height, PixelFormat.Format24bppRgb);
        Graphics g = Graphics.FromImage(bmp);
    
        g.SmoothingMode = SmoothingMode.AntiAlias;
        g.Clear(Color.LightGray);
    
        // Use the Graphics object to draw three rectangles.
        g.DrawRectangle(Pens.White, 1, 1, width-3, height-3);
        g.DrawRectangle(Pens.Aquamarine, 2, 2, width-3, height-3);
        g.DrawRectangle(Pens.Black, 0, 0, width, height);
    
        // Use the Graphics object to write a string
        // on the rectangles.
        g.DrawString(
            "ASP.NET Samples", rectangleFont,
            SystemBrushes.WindowText, new PointF(10, 40));
    
        // Apply color to two of the rectangles.
        g.FillRectangle(
            new SolidBrush(
                Color.FromArgb(a, 255, 128, 255)),
            x, 20, 100, 50);
    
        g.FillRectangle(
            new LinearGradientBrush(
                new Point(x, 10),
                new Point(x1 + 75, 50 + 30),
                Color.FromArgb(128, 0, 0, 128),
                Color.FromArgb(255, 255, 255, 240)),
            x1, 50, 75, 30);

        // Save the bitmap to the response stream and
        // convert it to JPEG format.
        bmp.Save(Response.OutputStream, ImageFormat.Jpeg);
    
        // Release memory used by the Graphics object
        // and the bitmap.
        g.Dispose();
        bmp.Dispose();
    
        // Send the output to the client.
        Response.Flush();
    }

</script>
<html>
<head>
</head>
<body>
    <form id="Form1" runat="server">
    </form>
</body>
</html>



--------------------
user posted image
PM MAIL WWW   Вверх
Levsha
Дата 28.3.2006, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 30.9.2005

Репутация: нет
Всего: 4



Спасибо, покопаю smile


--------------------
PM   Вверх
winww
Дата 11.5.2006, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 5.5.2006

Репутация: нет
Всего: нет



Спасибо за пример, но возник вопрос!
Почему изчезают все остальные таблицы, контролы, просто текст? При просмотре в блокноте, все также изчезает, только картинка остается, подскажите пожалуйста что сделать нужно. 

Помойму из за этого: (я на vb переделал)

        Dim bmp As Bitmap = New Bitmap(width, height, PixelFormat.Format24bppRgb)
        Dim g As Graphics = Graphics.FromImage(bmp)

И еще а в каком раздееле Msdn данный код написан? 
PM MAIL   Вверх
arilou
Дата 11.5.2006, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



winww, приведенный код надо использовать, например, в атрибуте src тэга IMG в той странице, на которой ты хочешь картинку разместить.

Например, допустим, что ты запихнул этот код в CreateRandomImage.aspx и хочешь эту картинку показать на. странице Register.aspx. Тогда в Register.aspx добавляешь следующее:

Код

<img src="CreateRandomImage.aspx">


и там появится картинка, нарисованная с пом. GDI+ (которое в .NET находится в пространстве имен System.Drawing). 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
mr.DUDA
Дата 11.5.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 5
Всего: 232



Цитата(winww @  11.5.2006,  11:04 Найти цитируемый пост)
Почему изчезают все остальные таблицы, контролы, просто текст? При просмотре в блокноте, все также изчезает, только картинка остается, подскажите пожалуйста что сделать нужно. 

А может потому, что в примере код добавлен прямо в страницу типа как в old-style ASP страницах. Хотя могу и ошибаться.

В мсдн пример лежит в описании класса HttpResponse. 


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 11.5.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 1
Всего: 149



Потому что кактинка сохраняется в выходной поток страницы 
Цитата(mr.DUDA @  27.3.2006,  18:02 Найти цитируемый пост)
bmp.Save(Response.OutputStream, ImageFormat.Jpeg);

 
PM MAIL WWW ICQ   Вверх
winww
Дата 11.5.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 5.5.2006

Репутация: нет
Всего: нет



Спасибо бальшое, получилось!! smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.