На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Определение цвета пикселя
    Извините эта тема уже была наверное, но у меня небольшая проблема.
    Я определяю цвет пикселя так:

    TColor color;
    color=Image1->Canvas->Pixels[x][y];

    Если в Image1 загружен bmp ,то все работает ,а если jpg ,то выходит ошибка!
    Кто знает в чем дело то помогите.Спасибо.
    Да и еще как определить размер рисунка загруженный в TImage?
      ExpandedWrap disabled
        Да и еще как определить размер рисунка загруженный в TImage?
      Image1->Picture->Bitmap->Width и Height, но опять же, когда Bitmap... А вот про JPeg на самом деле не знаю.
        Image->Picture->Graphic->Width
        Image->Picture->Graphic->Height
          Цитата
          _Eldorado_, 25.08.04, 19:30
          а если jpg ,то выходит ошибка!

          Открыть в JPG.
          Копировать область в TBitmap.
          Работать с JPG как с Битмап :)
            myaut, ага, особенно когда картинка 2000х2000, вот тогда точно с Bitmap удобно работать будет :D .
            Вообще, как там кто-то выражался, зачем доставать правое ухо левой рукой через BMP? :wall:
              Просто TJPEGImage не предоставляет непосредственного доступа к Пикселам. Вот и приходится выкрычиваться B)
                если пиксел цвет которого надо определить виден (т.е. не ушел куда-то за экран при 2000х2000), то можно и при загруженном jpg и при bmp определить через HDC того на чем они нарисованы, т.е. через GetPixel(GetDC(Image1->Handle),X,Y) вот только X и Y будут не совсем те (хотя может оказаться что те самые :) ) - вероятно надо будет пересчитывать...

                Добавлено в :
                зы: тока что Image1->Canvas->Pixels, что GetPixel() - работают ооочень медленно - лучше через сканлайны или дибы работать...
                  Цитата myaut @ 25.08.04, 23:12
                  Копировать область в TBitmap.

                  А как скопировать JPG в TBitmap?

                  Добавлено в :
                  А че это такое?
                  Создаю к примеру .bmp и закрашиваю все красным.Сканирую
                  каждый пиксел и в RGB записываю в файл.
                  В некоторых местах записывается (255,255,255)... :wall:
                    TBitmap* bmp;
                    TJPEGImage* jpeg;

                    ......

                    bmp->Assign(jpeg);
                    или
                    bmp->Canvas->Draw(0, 0, jpeg);
                      .jpeg находится в TImage.Как его оттуда взять и записать в TJPEGImage?
                        TImage* image;
                        TJPEGImage* jpeg;

                        ......
                        jpeg->Assign(image->Picture->Graphic);

                        но только в том случае, если в TImage хранится битмап.

                        Добавлено в :
                        В смысле в TImage не jpeg хранится, а уже раскодированный битмап.
                          ExpandedWrap disabled
                              Graphics::TBitmap *bmp=new Graphics::TBitmap;
                              bmp->Assign(Image1->Picture->Graphic);
                              ...
                              delete bmp;
                               
                            ExpandedWrap disabled
                              std::auto_ptr<Graphics::TBitmap> bmp(new Graphics::TBitmap);
                                bmp->Assign(Image1->Picture->Graphic);
                                ...

                            так ИМХО надежнее :)
                              А как на счет белых пикселей (255,255,255)?
                              Кто-нибуть знает че это такое?Откуда они берутся?Помогите плииз.

                              Добавлено в :
                              Все получилось!Это были пиксели с индексами
                              Image->Picture->Graphic->Width
                              Image->Picture->Graphic->Height
                              Надо отнимать 1 вить индексация пикселей идет с 0!!!
                                Цитата
                                ADA, 26.08.04, 19:09
                                так ИМХО надежнее
                                Как это может быть надежнее, чем явно писАть delete?
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0407 ]   [ 15 queries used ]   [ Generated: 19.05.24, 19:38 GMT ]