В прошлой статье по преобразованию графических форматов — мы рассмотрели как можно преобразовать JPEG в Bitmap и наоборот. В этой статье также хотел рассмотреть преобразование графических форматов, но уже других, также довольно популярных, которые также можно сделать пакетным преобразование данных форматов. В данном случае — это преобразование *.WMF в *.BMP файлы. WMF - это формат векторных графических файлов, данный формат разработан Microsoft, так что его использование в других каких-либо операционных системах — бесполезно, в других ОС есть похожие форматы векторных изображений. Тут в wmf, emf-файлах конечно размер файла самого побольше, чем в bmp-файлах, хотя можно ужать очень хорошо, качество конечно при конвертации очень меняется, что в ту сторону, что в обратную.

Теперь давайте определимся, что у нас будет находится на форме

  • TGroupBox — 2 шт
  • TButton — 4 шт
  • TLabel — 4 шт
  • TOpenDialog
  • TSaveDialog

Ну и в принципе все. В общем расположите примерно компоненты, как показано на рисунке.

Дальше мы напишем код для открытия файла и для сохранения соответсвенно

Для открытия

procedure TForm1.Button1Click(Sender: TObject);
begin
   if OpenDialog1.Execute then
    Edit1.Text:=OpenDialog1.FileName
   else
    exit;
end;

Для сохранения

procedure TForm1.Button2Click(Sender: TObject);
begin
   if SaveDialog1.Execute then
    Edit2.Text:=SaveDialog1.FileName
   else
    exit;
end;

Итак теперь непосредственно к самому конвертированию приступим, для этого на событие OnClick кнопки напишем следующий код

procedure TForm1.Button3Click(Sender: TObject);
var
 MetaFile:TMetafile;
 MetaCanvas:TMetafileCanvas;
 bmp:TBitmap;
begin
   try
    MetaFile:=TMetafile.Create;
    bmp:=TBitmap.Create;
    bmp.LoadFromFile(Edit1.Text);
    MetaFile.Height:=bmp.Height;
    MetaFile.Width:=bmp.Width;
    MetaCanvas:=TMetafileCanvas.Create(MetaFile,0);
    MetaCanvas.Draw(0,0,bmp);
    MetaCanvas.Free;
    MetaFile.SaveToFile(ChangeFileExt(Edit2.Text,'.wmf'));
    MetaFile.Free;
    bmp.Free;
   except
    on e:Exception do
     begin
      MetaFile.Free;
      MetaCanvas.Free;
      bmp.Free;
      ShowMessage(e.Message);
     end;
   end;
end;

Что мы тут делаем, используем TMetaFile, далее в Bitmap загружаем изображение, формируем наш метафайл, задав ему ширину, высоту и затем с помощью TMetafileCanvas мы перерисовываем наш Bitmap в TMetaFile, задав первоначальные координаты. После перерисовки мы сохраняем файл. Если откроем файл, то можно увидеть, что качество картинки немного ухудшилось. Теперь непосредственно перейдем к обратной конвертации

procedure TForm1.Button4Click(Sender: TObject);
begin
   if OpenDialog1.Execute then
    Edit3.Text:=OpenDialog1.FileName
   else
    exit;
end;
 
procedure TForm1.Button6Click(Sender: TObject);
var
 bmp:TBitmap;
 MetaFile:TMetafile;
begin
   try
    MetaFile:=TMetafile.Create;
    bmp:=TBitmap.Create;
    MetaFile.LoadFromFile(Edit3.Text);
    bmp.Height:=MetaFile.Height;
    bmp.Width:=MetaFile.Width;
    bmp.Canvas.Draw(0,0,MetaFile);
    bmp.SaveToFile(ChangeFileExt(Edit4.Text,'.bmp'));
    bmp.Free;
    MetaFile.Free;
   except
    on e:Exception do
     begin
      bmp.Free;
      MetaFile.Free;
      ShowMessage(e.Message);
     end;
   end;
end;

Открытие и сохранения файлов почти теже самые, только используются другие TEdit. Тут почти тоже самое, также загружаем в TMetaFile - метафайл, затем формируем Bitmap-файл, задав ему ширину, высоту и перерисовываем на наш Bitmap, задав координаты перерисовки, только одно отличие тут, что мы не используем дополнительный класс канвы, а уже стандартный. Если открыть наш Bitmap, то опять же можно увидеть как качество картинки поменялось, проделывая эту операцию с одним и тем же файлом, то можно качество картинки совсем потерять.

Кстати, еще хочу сказать, что если у Вас есть своя собственная гостиница, пансионат, детский сад, то текстильное оснащение помещений Вам просто необходимо. А ПТК — производственно технический комбинат поможет Вам в этом, так как в данной области ОАО «ПТК» зарекомендовал себя только с лучшей стороны.

Исходник статьи можно скачать тут

Автор статьи - Andrey53

Метки: , , , , , ,

Оставить комментарий

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*