![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Bitmap=>Jpeg без модуля Jpeg соотвтственно. [D7, WinXP]
Sub_Black © (2006-04-17 11:20:00)Ребяты, подскажите возможно ли это, API вроде напрямую с Jpeg не работает. Может быть есть у кого наработки, а-то я пока в тупике.
(2006-05-26 19:09:00) [41]Удалено модератором
(2006-05-26 18:55:00) [42]Удалено модератором
(2006-05-26 18:23:00) [43]Удалено модератором
(2006-05-26 15:01:00) [44]Удалено модератором
(2006-05-26 14:39:00) [45]Удалено модератором
(2006-05-26 12:40:00) [46]Удалено модератором
(2006-05-26 11:55:00) [47]Удалено модератором
(2006-05-26 11:33:00) [48]Удалено модератором
(2006-05-26 09:53:00) [49]Удалено модератором
(2006-05-26 07:57:00) [50]Удалено модератором
(2006-05-26 07:49:00) [51]Удалено модератором
(2006-05-26 06:18:00) [52]Удалено модератором
homm (2006-05-15 08:18:00) [53]http://homm86.narod.ru/files/tinypictures.rar
DevilDevil (2006-05-15 01:20:00) [54]homm © (13.05.06 03:05) [68]
var
Disp : IPicture;
w : integer;
begin
if SUCCEEDED(OleLoadPictureFile('C:\Ex.bmp', Disp)) then Caption := 'Ok';
// Disp.get_Width(w);
// Caption := IntToSTr(w);
Disp := nil;
end;
Если разкоментировать, то возникает ошибка чтения данных.
Подозреваю, не IPicture здесь должен быть, а IDispatch ... однако этот подобных методов не имеет...
homm (2006-05-13 03:05:00) [55]
> 1) существует возможность более продвинутой работы с графическими
> данными посредством этих функций. Как?
По памяти:
procedure TForm1.FormCreate(Sender: TObject);
var
Disp : IPicture;
Bitmap: HBitmap;
begin
OleLoadPictureFile('C:\Example.jpg', Disp);
Disp.GetHandle(Bitmap);
Disp := nil;
end;
> вы уж извините меня за мой французский, но нихрена они не
> работают, как я того ожидалю
А ты должен не ожидать, а делать. Но в данном случае даже это не поможет. (см где-то выше)
DevilDevil (2006-05-13 02:00:00) [56]вы уж извините меня за мой французский, но нихрена они не работают, как я того ожидалю Т.е. из жпега, гифа, может ещё какого формата В БИТМАП сохраняет. Зато вот обратно - никак. Точнее сохраняет например под именем Example.jpg, а по сути своей всё тот же битмап,- занимает РОВНО столько, сколько битмап
DevilDevil (2006-05-13 01:43:00) [57]исправил, в своём модуле в разделе implementation сделал следующее объявление (olepro32.dll -> oleaut32.dll):
function OleLoadPictureFile(varFileName: OleVariant; var lpdispPicture: IDispatch): HResult; stdcall; external 'oleaut32.dll' name 'OleLoadPictureFile';
function OleSavePictureFile(dispPicture: IDispatch; bstrFileName: TBStr): HResult; stdcall; external 'oleaut32.dll' name 'OleSavePictureFile';
а сохраняю jpeg в другой формат так:
procedure TForm1.FormCreate(Sender: TObject);
var
Disp : IDispatch;
begin
OleLoadPictureFile('C:\Example.jpg', Disp);
OleSavePictureFile(Disp, 'C:\Ex.bmp');
Disp := nil;
end;
Тем не менее остаётся ещё несколько вопросов:
1) существует возможность более продвинутой работы с графическими данными посредством этих функций. Как?
2) что за CPictureHolder, где его достать?
3) существует ли эквивалентная статья по Delphi?
С Уважением
DevilDevil (2006-05-13 01:33:00) [58]XProger © (09.05.06 00:01) [42]
подключил модуль ActiveX, использую OleLoadPictureFile, при запуске приложения компилятор кричит, что не найдена точка входа в DLL. Посмотрел, в модуле ActiveX идёт ссылка на olepro32.dll, попробовал с ole32.dll как ты говорил, результат прежний. Что делать? Да, и это... дай уже ссылку на хорошую стать.
ЗЫ там требуется класс CPictureHolder... где брать?
(2006-05-12 22:50:00) [59]Удалено модератором
antonn (2006-05-12 20:07:00) [60]homm © (12.05.06 19:28) [62]
да он не про это...
а про то, что лучше упаковать+архив, чем просто архив (хоть что, как я понял).
в примере упакованный меньше, но не на много. Dll тоже сжимаются?