Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
7 / 7 / 1
Регистрация: 16.01.2012
Сообщений: 95

Ошибка JPEGImage->Compress()

20.04.2012, 21:38. Показов 2594. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю скиншот экрана
Все вроде ничего, но после 5-10 раза вылетает с ошибкой Out Of system recourses, а иногда держиться довольно долго
вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 static void GetScreenShot(char *Buffer,int &Size)
    {
        TMemoryStream  *MemoryStream;
        TJPEGImage     *JPEGImage;
        TCopyDataStruct Msg;
 
        MemoryStream = new TMemoryStream;
        JPEGImage = new TJPEGImage;
 
        Graphics::TBitmap *Bitmap = new Graphics::TBitmap();
        Bitmap->Height=Screen->Height;
        Bitmap->Width=Screen->Width;
        BitBlt(Bitmap->Canvas->Handle,0,0,Screen->Width,Screen->Height,GetDC(0),0,0,SRCCOPY);
 
        JPEGImage->Assign(Bitmap);
        JPEGImage->CompressionQuality = 25;
        JPEGImage->Compress();                            // <---------- Вот тут вылетает
        JPEGImage->SaveToStream(MemoryStream); 
 
        Msg.dwData = 1;
        Msg.cbData = MemoryStream->Size;
        Msg.lpData = MemoryStream->Memory;
 
        memset(Buffer,0,sizeof(Buffer));
        memcpy(Buffer,Msg.lpData,Msg.cbData);
 
        Size = Msg.cbData;
 
        delete Bitmap;
        delete JPEGImage;
        delete MemoryStream;
    }
Не пойму в чем дело
переделал в
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
    static void GetScreenShot(char *Buffer,int &Size)
    {
        TMemoryStream  *MemoryStream;
        TJPEGImage     *JPEGImage;
        TCopyDataStruct Msg;
 
        MemoryStream = new TMemoryStream;
        JPEGImage = new TJPEGImage;
 
 
        TCanvas *ScreenCopy = new TCanvas;
        Graphics::TBitmap *gr = new Graphics::TBitmap();
        TRect rcDest, rcSource;
 
        rcDest = Rect(0, 0, 320, 240);
        rcSource = Screen->DesktopRect;
 
        ScreenCopy->Handle = GetDC(0);
       gr->Height = 240;
       gr->Width = 320;
       gr->Canvas->CopyRect(rcDest,ScreenCopy,rcSource);
       ReleaseDC(0, ScreenCopy->Handle);
 
       JPEGImage->CompressionQuality = 25;
       JPEGImage->Assign(gr);
//        JPEGImage->Compress();
try
{
        JPEGImage->SaveToStream(MemoryStream);
}
catch(Exception &e)
{
}
        Msg.dwData = 1;
        Msg.cbData = MemoryStream->Size;
        Msg.lpData = MemoryStream->Memory;
 
        memset(Buffer,0,sizeof(Buffer));
        memcpy(Buffer,Msg.lpData,Msg.cbData);
 
        Size = Msg.cbData;
 
        delete ScreenCopy;
        delete gr;
        delete JPEGImage;
        delete MemoryStream;
    }
все равно - вылетает. Прочитал что при JPEGImage->SaveToStream(MemoryStream) метод JPEGImage->Compress() вызывается автоматически.
Но не понятно, почему данный код (см. ниже) работает стабильно (использую DSPack для отлова кадров с WEB камеры)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    static void GetVideoFromVideoDevice(char *Buffer,int &Size)
    {
        TMemoryStream  *MemoryStream = new TMemoryStream;;
        TJPEGImage     *JPEGImage = new TJPEGImage;
        TCopyDataStruct Msg;
 
        MainForm->SampleGrabber->GetBitmap(MainForm->VideoImage->Picture->Bitmap);
        Application->ProcessMessages();
        MemoryStream->Position = 0;
        MemoryStream->Clear();
 
        JPEGImage->Assign(MainForm->VideoImage->Picture->Bitmap);
        JPEGImage->CompressionQuality = 25;
        JPEGImage->Compress();
        JPEGImage->SaveToStream(MemoryStream);
 
        Msg.dwData = 1;
        Msg.cbData = MemoryStream->Size;
        Msg.lpData = MemoryStream->Memory;
 
        memset(Buffer,0,sizeof(Buffer));
        memcpy(Buffer,Msg.lpData,Msg.cbData);
 
        Size = Msg.cbData;
        delete MemoryStream;
        delete JPEGImage;
    }
в чем моя ошибка, весь день гуглил, крутил так и так, ни что не помогает. Помогите
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.04.2012, 21:38
Ответы с готовыми решениями:

Почему JPEGImage->Compress() работает в TTimer, но не работает в нитке
to: Модератор LK, да я согласен мы маленько отвлеклись :) но просто вопрос наболевший, не дает спать 2 дня уже: Почему в Таймере...

Функция Compress(s,t)
Назначение: замена в строке s множественных вхождений символа t на одно.

функция compress
Люди, плз помогите.:help: Написать и протестировать функцию compress(), которая &quot;сжимает&quot; строку, удаляя из неё все пробелы. надо...

22
21.04.2012, 22:34
Студворк — интернет-сервис помощи студентам
 Комментарий модератора 
Или будем обсуждать вопросы по потокам в новой теме, или эта тема будет закрыта .
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
21.04.2012, 22:34
в CreateThread нет синхронизации с формой!
0
21.04.2012, 22:35
 Комментарий модератора 
Тема закрыта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.04.2012, 22:35

Функция Compress(s,t)
Назначение: замена в строке s множественных вхождений символа t на одно.

Compress и uncompress палидромов
Нужна помощь с зачётом, в прологе я 0, а дэдлайн уже в пятницу.(В далнейшем не собираюсь использовать этот язык, так как не специализируюсь...

Compress Document Data + Ods 51
Собственно поднимаю тему по сабжу Так как некая ситуация возникает, которую я не совсем понимаю. Имеем сервер 8.5.1 Имеем базу...

Не работает метод Compress для TJpegImage
Всем добрый день. Хочу воспользоваться методом Compress для TJpegImage. Написал тестовую процедуру.var jpg: TJpegImage; bmp:...

Написать программу с функцией Compress, выполняющую сжатие строки
Добрый вечер! Подскажите пожалуйста. Надо написать функцию CompressStr(s), выполняющую сжатие строки s по следующему правилу: каждая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Закрытая тема Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru