Приветствую Вас Гость | RSS

Delphi заготовки

Пятница, 26.04.2024, 02:30
Главная » 2012 » Май » 15 » Пример программы на Delphi для конвертации JpgToBmp / BmpToJpg из контекстного меню
13:42
Пример программы на Delphi для конвертации JpgToBmp / BmpToJpg из контекстного меню
    Задача автоматизация конвертации изображения из BMP в JPG одним кликом и интеграция с контекстным меню.

на основании статьи

http://www.itword.net/page/delphi-punkt-v-kontekstnoe
http://articles.org.ru/cfaq/index.php?qid=2954

\Program Files\Borland\Delphi7\Demos\ActiveX\ShellExt - пример из демо Delphi
 
разделим программу по конвертации  appname.exe  и dll для инициализации

в Dll вносим следующие изменения 

1.  Class_ContextMenu: TGUID = '{3ff174ae-e8bd-4d3d-95b9-9bb9cc6d4a91}';

что такое TGUID
http://ru.wikipedia.org/wiki/GUID
значение берем
http://www.guidgenerator.com/online-guid-generator.aspx

меняем строчку добавления кнопки

2.    InsertMenu(Menu, indexMenu, MF_STRING or MF_BYPOSITION, idCmdFirst,PChar('Выполнить конвертацию JPG < -- > BMP '));

3. const
  FileExt: array [0 .. 2] of string =
      ('.jpg', '.jpeg', '.bmp'); // работаем только с 3 форматами
все остальное оставляем как в примере



правой кнопкой на файл с определенным расширением


теперь у нас есть  программа которая добавляет новый пункт в меню при щелчке на фалы с заданным разрешением. кроме того при щелчке на данные файлы происходит вызов программы appname.exe c параметрами в виде списка файлов

теперь напишем программу конвертации
 
1. Добавим на форму компонент TCheckListBox для выбора
2. напишем процедуру загрузки списка файлов из нашей dll



procedure TForm1.FormCreate(Sender: TObject);
var
  cmd : string;
  i : Integer;
  pr,dir:string;

begin
  // Показ этих параметров - обратите внимание, что 0-ой параметр это
  // выполняемая команда в Windows
  // получаем список файлов в TCheckListBox
  dir:=ParamStr(2);
  for i := 3 to ParamCount do begin
     pr:=ParamStr(i);
     if pr<>'' then  if pr[1]='*' then begin pr:=dir+copy(pr,2,length(pr)); end;
     form1.CheckListBox1.Checked[form1.CheckListBox1.Items.Add(pr)]:=true;
  end;

end


из наших примеров  возьмем функции

uses jpeg;

procedure JPEGtoBMP(const FileName: TFileName);
var
  jpeg: TJPEGImage;
  bmp:  TBitmap;
begin
  jpeg := TJPEGImage.Create;
  try
    jpeg.CompressionQuality := 100; {Default Value}
    jpeg.LoadFromFile(FileName);
    bmp := TBitmap.Create;
    try
      bmp.Assign(jpeg);
      bmp.SaveTofile(ChangeFileExt(FileName, '.bmp'));
    finally
      bmp.Free
    end;
  finally
    jpeg.Free
  end;
end;

procedure BMPToJPEG(const FileName: TFileName);
var
  jpeg: TJPEGImage;
  bmp:  TBitmap;
begin
  bmp := Tbitmap.Create;
  jpeg := TJPEGImage.Create;
  try
    bmp.LoadFromFile(FileName);
    try
      jpeg.Assign(bmp);
      jpeg.CompressionQuality := 100; {Default Value}
      jpeg.SaveTofile(ChangeFileExt(FileName, '.jpg'));
    finally
      bmp.Free;
      jpeg.Free;
    end;
  finally

  end;
end;

теперь добавим выбор возможности конвертации
с помощью компонента  TCombobox
Добавим в свойство Items 

*.jpg
*.bmp
и выставим  form1.ComboBox1.ItemIndex:=0  - тип выходных файлов по умолчанию  JPG









Напишем процедуру конвертации списка файлов

procedure TForm1.Button1Click(Sender: TObject);
var x:integer;
begin
  for X:=0 to form1.CheckListBox1.Items.Count-1 do begin
  try
  if form1.CheckListBox1.Checked[x] then
  if form1.ComboBox1.ItemIndex=1 then
    JPEGtoBMP(form1.CheckListBox1.Items[x])
    else BMPToJPEG(form1.CheckListBox1.Items[x])

    except
    end;
  end;
  Showmessage('Файлы конвертированы ');
end;

не большая команда для регистрации DLL
uses Shellapi;


var dir:string;
begin
getdir(0,dir);  Shellapi.ShellExecute(application.Handle,'open',pchar('regsvr32'),pchar('"'+dir+'\contmenu_fordll.dll"'),'',5);
end;

исходник программы

/52_konvertacija_jpttobmp.zip



Просмотров: 2048 | Добавил: NetSoftWare | Рейтинг: 5.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *: