Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1

Сохранить JPEG

03.11.2013, 23:56. Показов 2227. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дюльфи сохраняет JPEG (12800x7200 где-то) за 32 секунды, пока фотошоп в то же время делает это за 7 секунд. Вопрос: как можно при 100% качестве сохранить огромный JPEG за кратчайшее время?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2013, 23:56
Ответы с готовыми решениями:

Сохранить в формате jpeg или tif изображение со сканера
при работе со сканером с помощью TWAIN я получаю указатель на DIB (т.е есть указатель на 1-ый byte выделенной памяти), ну почти на...

JPEG in Delphi
слушайте а как можно открыть изображение Jpeg и его описание в delphy

jpeg in delphy
Слушайте помогите нписать текст программы. Основная моя задумка это заставить программу считать изображение и вывести информацию о каждом...

13
 Аватар для noname_club
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
04.11.2013, 11:17
сторонние библиотеки?
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
04.11.2013, 16:51  [ТС]
noname_club, типа того...

Добавлено через 6 минут
Народ, нашёл сохранение на FASM.
Assembler
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
 format PE GUI 4.0         
  
 include 'win32w.inc'         
  
 struct GdiplusStartupInput         
        GdiplusVersion           dd ?         
        DebugEventCallback       dd ?         
        SuppressBackgroundThread dd ?          
        SuppressExternalCodecs   dd ?         
 ends         
  
 struct ImageCodecInfo         
        Clsid             db 16 dup ?         
        FormatID          db 16 dup ?         
        CodecName         dd ?         
        DllName           dd ?         
        FormatDescription dd ?         
        FilenameExtension dd ?         
        MimeType          dd ?         
        Flags             dd ?         
        Version           dd ?         
        SigCount          dd ?         
        SizeSize          dd ?         
        SigPattern        dd ?         
        SigMask           dd ?         
 ends         
  
 section '.text' code readable executable         
  
 entry $         
  
              invoke  GdiplusStartup,token,input,NULL         
              test    eax,eax         
              jnz     exit         
  
              invoke  GdipGetImageEncodersSize,encoders_count,encoders_size         
              test    eax,eax         
              jnz     gdiplus_shutdown         
              invoke  VirtualAlloc,0,[encoders_size],MEM_COMMIT,PAGE_READWRITE         
              test    eax,eax         
              jz      gdiplus_shutdown         
              mov     ebx,eax         
              invoke  GdipGetImageEncoders,[encoders_count],[encoders_size],ebx         
              test    eax,eax         
              jnz     gdiplus_shutdown         
          scan_encoders:         
              mov     esi,[ebx+ImageCodecInfo.MimeType]         
              mov     edi,encoder_mimetype         
              mov     ecx,11         
              repe    cmpsw         
              je      encoder_found         
              add     ebx,sizeof.ImageCodecInfo         
              dec     [encoders_count]         
              jnz     scan_encoders         
              ; no encoder found         
              jmp     gdiplus_shutdown         
           encoder_found:         
              lea     esi,[ebx+ImageCodecInfo.Clsid]         
              mov     edi,encoder_clsid         
              mov     ecx,4         
              rep     movsd         
              invoke  VirtualFree,ebx,0,MEM_RELEASE         
  
              invoke  GetDC,HWND_DESKTOP         
              test    eax,eax         
              jz      gdiplus_shutdown         
              mov     esi,eax         
              invoke  GetSystemMetrics,SM_CYSCREEN         
              mov     [screen_height],eax         
              invoke  GetSystemMetrics,SM_CXSCREEN         
              mov     [screen_width],eax         
              invoke  CreateCompatibleBitmap,esi,[screen_width],[screen_height]         
              test    eax,eax         
              jz      release_desktop_dc         
              mov     ebx,eax         
              invoke  CreateCompatibleDC,esi         
              test    eax,eax         
              jz      delete_bitmap         
              mov     edi,eax         
              invoke  SelectObject,edi,ebx         
              test    eax,eax         
              jz      delete_dc         
              invoke  BitBlt,edi,0,0,[screen_width],[screen_height],esi,0,0,SRCCOPY         
              test    eax,eax         
              jz      delete_dc         
  
              invoke  GdipCreateBitmapFromHBITMAP,ebx,NULL,gdip_bitmap         
              test    eax,eax         
              jnz     delete_dc         
  
              invoke  GdipSaveImageToFile,[gdip_bitmap],file_name,encoder_clsid,NULL         
  
              invoke  GdipDisposeImage,[gdip_bitmap]         
        delete_dc:         
              invoke  DeleteObject,edi         
        delete_bitmap:         
              invoke  DeleteObject,ebx         
        release_desktop_dc:         
              invoke  ReleaseDC,HWND_DESKTOP,esi         
        gdiplus_shutdown:         
              invoke  GdiplusShutdown,[token]         
        exit:         
              invoke  ExitProcess,0         
  
 section '.data' data readable writeable         
  
        file_name du 'test.jpg',0         
  
        encoder_mimetype du 'image/jpeg',0         
        encoder_clsid db 16 dup ?         
  
        input GdiplusStartupInput 1         
        token dd ?         
        memdc dd ?         
        gdip_bitmap dd ?         
  
        encoders_count dd ?         
        encoders_size dd ?         
  
        screen_width dd ?         
        screen_height dd ?         
  
 section '.rdata' data readable         
  
 data import         
  
        library kernel32,'KERNEL32.DLL',\         
                user32,'USER32.DLL',\         
                gdi32,'GDI32.DLL',\         
                gdiplus, 'GDIPLUS.DLL'         
  
        include 'api\kernel32.inc'         
        include 'api\user32.inc'         
        include 'api\gdi32.inc'         
  
        import  gdiplus,\         
                GdiplusStartup,'GdiplusStartup',\         
                GdiplusShutdown,'GdiplusShutdown',\         
                GdipGetImageEncodersSize,'GdipGetImageEncodersSize',\         
                GdipGetImageEncoders,'GdipGetImageEncoders',\         
                GdipSaveImageToFile,'GdipSaveImageToFile',\         
                GdipDisposeImage,'GdipDisposeImage',\         
                GdipCreateBitmapFromHBITMAP,'GdipCreateBitmapFromHBITMAP'         
  
 end data
Добавлено через 37 секунд
Теперь, как вызвать процедуру сохранения?
0
 Аватар для noname_club
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
04.11.2013, 17:07
чтото мне подсказывает что photoshop через видеокарту картинки гоняет, поэтому такая скорость обработки
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
04.11.2013, 17:22  [ТС]
noname_club, что ты))) У меня оперативы было мало - потребовало именно оперативу! Да и без видяхи у меня сохраняло мгновенно)))
0
 Аватар для noname_club
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
04.11.2013, 17:42
то есть просто оперативы для обработки сабжа не хватало?

Добавлено через 3 минуты
Народ, нашёл сохранение на FASM.
скорее на GDI+ API чем на FASM
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
04.11.2013, 18:53  [ТС]
Да, но какую библиотеку юзать???
0
 Аватар для noname_club
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
04.11.2013, 18:55
Дельфийский JPEG медленно пакует при условии что памяти достаточно или нет?
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
04.11.2013, 19:11  [ТС]
noname_club, да он просто медленно сохраняет, на оперативу ему пофиг у меня её 8 гиг! Как сохранить быстрее. Прошу, подскажи, как быстрее.
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
06.11.2013, 00:31  [ТС]
Гуглил - не нашёл нормальной библиотеки. libjpeg - может быть, но я не умею пользоваться библиотеками...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,877
Записей в блоге: 12
06.11.2013, 00:50
SeryZone, я же тебе показывал код с GDIPlus:

Delphi
1
2
3
4
5
    bitmap := TGPBitmap.Create(bm.Handle, bm.Palette);
    Prams := TGPEncoderParameters.Create;
    quality := 100;
    Prams.Add(EncoderQuality, quality);
    bitmap.Save('D:\test\saved.jpg', TGPImageFormat.Jpeg, Prams);
? Вот только что проверил: файл размером 14565х5045 сохранился за 10 секунд...
2
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
06.11.2013, 00:58  [ТС]
UI, Спасибо огромное... А что в uses прописывать???
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,877
Записей в блоге: 12
06.11.2013, 01:38
Delphi
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
implementation
uses jpeg, gdiplus;
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  bm : TBitmap;
  jpeg : TJPEGImage;
 
  bitmap : IGPBitmap;
  Prams: IGPEncoderParameters;
  quality : Integer;
begin
  if OpenPictureDialog1.Execute then
  begin
    jpeg := TJPEGImage.Create;
    jpeg.LoadFromFile(OpenPictureDialog1.FileName);
 
    bm := TBitmap.Create;
    bm.Assign(jpeg);
 
    Memo1.Lines.Add(TimeToStr(Now));
    bitmap := TGPBitmap.Create(bm.Handle, bm.Palette);
    Prams := TGPEncoderParameters.Create;
    quality := 100;
    Prams.Add(EncoderQuality, quality);
    bitmap.Save('D:\test\saved.jpg', TGPImageFormat.Jpeg, Prams);
    Memo1.Lines.Add(TimeToStr(Now));
 
    jpeg.Free;
    bm.Free;
  end;
end;
Я тут ошибся чуток... Это не время сохранения файла - 10 секунд, это время подгрузки и сохранения, суммарное. Так что собственно файл сохраняется еще быстрее, порядка 4-5 секунд...
2
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
06.11.2013, 09:53  [ТС]
UI, бред какой-то, не понимаю, как установить...

Добавлено через 22 минуты
Ура... Получилось... Сохраняет мгновенно!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2013, 09:53
Помогаю со студенческими работами здесь

BMP в JPEG
На форме расположены компоненты: opendialog1 и DBImage1 мне нужно открыть jpeg изображение, но оно не отрывается. Каким образом нужно...

JPEG error #53
здравствуйте. вылетает ошибка JPEG error #53 , как я понял из за того что подгружается "неправильный" Jpeg файл а можно...

JPEG error #53
При загрузке Jpeg изображения появляется такая ошибка. Что она значит. Как исправить?

Ошибка: #53 jpeg
str.Text:=HTTP.Get('http://ask.fm/signup'); u:=pars('image-captcha" height="40" src="',str.Text,'" width="100"'); http.get(u,ms); ...

Картиночки jpeg))
Такое дело,мне нужно чтобы при нажатии кнопки у меня в виджет image загружалась картинка 01.jpg например,которая лежит в папке с ексешником...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru