С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
Delphi 6-7

Конвертирование изображения из bmp в gif

14.10.2020, 22:03. Показов 1334. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите пожалуйста, у меня на форме есть кнопка открыть, которая открывает изображения(в формате bmp), не могу разобраться с кнопкой конвертирование, как мне прописать так, чтобы конвертировался именно тот файл, который я открыла, а не тот который у меня в функции прописан(Безымянный.bmp).






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
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
unit main;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, ComCtrls, GIFImage, Buttons;
 
type
  TFormAnimate = class(TForm)
    Button1: TButton;
    btn1: TBitBtn;
    img1: TImage;
    dlgOpen1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure btn1Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  FormAnimate: TFormAnimate;
 
implementation
 
{$R *.DFM}
 
procedure ConvertBMP2GIF;
var
 bmp: TBitmap;
 gif: TGIFImage;
begin
 gif:=TGifImage.Create;
 
 try
  bmp:=TBitmap.Create;
 
  try
   bmp.LoadFromFile(Безымянный.bmp');
   gif.Assign(bmp);
 
  finally
   bmp.Free;
  end;
 
  gif.SaveToFile(Безымянный.gif');
 finally
  gif.Free;
 end;
end;
 
procedure TFormAnimate.Button1Click(Sender: TObject);
begin
 ConvertBMP2GIF;
end;
 
procedure TFormAnimate.btn1Click(Sender: TObject);
begin
  if dlgOpen1.Execute and
FileExists(dlgOpen1.FileName) then
img1.Picture.LoadFromFile(dlgOpen1.FileName);
end;
 
end.
Миниатюры
Конвертирование изображения из bmp в gif  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2020, 22:03
Ответы с готовыми решениями:

Конвертирование в bmp
Как сконвертировать картинку из gif в bmp?

Конвертирование BMP в RTF
Нашел такой код function BitmapToRTF(pict: TBitmap): string; var bi, bb, rtf: string; bis, bbs: Cardinal; achar:...

Конвертирование bmp в BITMAP
Привет. Как st сделали из bmp BITMAP. С помощью какой программы ? В архиве bmp и массив. Новая папка.rar

22
15 / 13 / 2
Регистрация: 21.12.2019
Сообщений: 246
14.10.2020, 22:08
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
35
36
37
38
39
40
41
42
43
44
45
ar
  FormAnimate: TFormAnimate;
 
implementation
 
{$R *.DFM}
 
var
   path:string;
 
...
 
procedure ConvertBMP2GIF();
var
 bmp: TBitmap;
 gif: TGIFImage;
begin
 gif:=TGifImage.Create;
 
 try
  bmp:=TBitmap.Create;
 
  try
   bmp.LoadFromFile(path);
   gif.Assign(bmp);
 
  finally
   bmp.Free;
  end;
 
  gif.SaveToFile('Безымянный.gif');
 finally
  gif.Free;
 end;
end;
 
procedure TFormAnimate.btn1Click(Sender: TObject);
begin
  if dlgOpen1.Execute and
FileExists(dlgOpen1.FileName) then
begin
path:=dlgOpen1.FileName; 
img1.Picture.LoadFromFile(dlgOpen1.FileName);
end;
end;
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
14.10.2020, 22:10  [ТС]
А строка gif.SaveToFile('Безымянный.gif'); так же остается?
0
15 / 13 / 2
Регистрация: 21.12.2019
Сообщений: 246
14.10.2020, 22:22
Цитата Сообщение от Polina B Посмотреть сообщение
А строка gif.SaveToFile('Безымянный.gif'); так же остается?
она сохраняется файл в корневую директорию софта под этим именем, если хотите сохранять по тому же пути, то введите path вместо этого названия
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,356
Записей в блоге: 3
15.10.2020, 08:37
Цитата Сообщение от Silly_coder Посмотреть сообщение
она сохраняется файл в корневую директорию софта
Silly_coder, к сожалению, это далеко не так... Сохранение идет в текущую папку, а вот является ли текущей папкой в настоящий момент каталог приложения или ОС уже изменила это значение - Вы наверняка знать не можете... Поэтому для предотвращения коллизий - всегда указывайте полный путь:
Delphi
1
gif.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Безымянный.gif');
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
15.10.2020, 19:17  [ТС]
Что-то не получается, он пишет ошибку
Миниатюры
Конвертирование изображения из bmp в gif  
0
561 / 230 / 88
Регистрация: 11.07.2015
Сообщений: 817
15.10.2020, 19:36
Цитата Сообщение от Polina B Посмотреть сообщение
он пишет ошибку
Ну вместо path укажите путь к вашему файлу
Delphi
1
bmp.LoadFromFile(path);
0
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,352
15.10.2020, 19:38
Silly_coder, а где вызывается процедура ConvertBMP2GIF() ? И зачем имя файла задаётся в отдельной глобальной переменной? Не учите детей плохому. Имя входного файла нужно передать в эту функцию как параметр, равно как и имя выходного файла.
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
15.10.2020, 19:45  [ТС]
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
var
  FormAnimate: TFormAnimate;
 
implementation
 
{$R *.DFM}
 
procedure ConvertBMP2GIF;
var
 bmp: TBitmap;
 gif: TGIFImage;
begin
 gif:=TGifImage.Create;
 
 try
  bmp:=TBitmap.Create;
 
  try
   bmp.LoadFromFile('Áåçûìÿííûé.bmp');
   gif.Assign(bmp);
 
  finally
   bmp.Free;
  end;
 
  gif.SaveToFile('\Áåçûìÿííûé.gif');
 finally
  gif.Free;
 end;
end;
Вот здесь вызывается моя процедура

Добавлено через 33 секунды
А потом я просто прописываю ее имя в bottonclick1

Delphi
1
2
3
4
procedure TFormAnimate.Button1Click(Sender: TObject);
begin
 ConvertBMP2GIF;
end;
0
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,352
15.10.2020, 19:47
Примерно так:
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
procedure ConvertBMP2GIF(SrcBMPFileName, DestGIFFileName: string);
var
  bmp: TBitmap;
  gif: TGIFImage;
begin
  bmp := TBitmap.Create;
  try
    bmp.LoadFromFile(SrcBMPFileName);
  finally
  end;
 
  gif := TGifImage.Create;
  try
    gif.Assign(bmp);
    gif.SaveToFile(DestGIFFileName);
  finally
    bmp.Free;
    gif.Free;
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  fname: string;
begin
  if OpenDialog1.Execute then begin
    fname := OpenDialog1.FileName;
    SetLength(fname, ExtractFileExt(fname)); // Отрезали расширение файла
    ConvertBMP2GIF(OpenDialog1.FileName, fname + '.gif'); // Сохранить GIF рядом с исходным файлом
  end;
end;

Не по теме:

(Внимание! Писал на коленке)

0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
15.10.2020, 19:48  [ТС]
UR1004SWL, мне нужно не какой-то определенный файл, а любой. Который вот допустим я открыла, нажала на кнопку конвертировать, и он мне в папку сконвертировал это изображение в GIF. А в моем коде пока получается, что прописан определенный файл.
0
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,352
15.10.2020, 19:48
Цитата Сообщение от Polina B Посмотреть сообщение
А потом я просто прописываю ее имя в bottonclick1
Так нужно 2 разные кнопки или всё одной кнопкой можно сделать?
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
15.10.2020, 19:55  [ТС]
Вообще две разные, первая открывает файл, вторая - конвертирует этот файл в гиф.

Вот у меня был код для кнопки Открыть:

Delphi
1
2
3
4
5
6
procedure TFormAnimate.btn1Click(Sender: TObject);
begin
if dlgOpen1.Execute and
FileExists(dlgOpen1.FileName) then
img1.Picture.LoadFromFile(dlgOpen1.FileName);
end;
0
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,352
15.10.2020, 19:57
Если нужны 2 кнопки, то можно и так:
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
procedure TForm1.Button1Click(Sender: TObject);
var
  fname: string;
begin
  if OpenDialog1.Execute then
    try
      bmp.LoadFromFile(OpenDialog1.FileName); // bmp ранее созданный битмап, возможно, принадлежит Image
    except
      ShowMessage('Не удалось загрузить файл.');
    end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
  fname: string;
  gif: TGIFImage;
begin
  // Преобразовываем и сохраняем открытый ранее битмап
  if OpenDialog1.Execute then begin
    // OpenDialog всё ещё содержит имя файла. Но по хорошему надо бы сохранить
    // имя открываемого файла в отдельной переменной.
    fname := OpenDialog1.FileName;
    SetLength(fname, ExtractFileExt(fname)); // Отрезали расширение файла
 
    gif := TGifImage.Create;
    try
      gif.Assign(bmp);
      gif.SaveToFile(fname + '.gif'); // Сохранить GIF рядом с исходным файлом
    finally
      gif.Free;
    end;
  end;
end;
Открыли картинку, посмотрели, стоит ли её конвертировать и нажали вторую кнопку. Она автоматически сохраняет новую картинку рядом с открытой картинкой.
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
15.10.2020, 20:01  [ТС]
Сейчас попробую, спасибо большое!

Добавлено через 2 минуты
в коде для button1Click ругается на bmp: Undeclared identifier: bmp
ЕЕ объявить надо?
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
15.10.2020, 20:07  [ТС]
Вот такие ошибки
Миниатюры
Конвертирование изображения из bmp в gif   Конвертирование изображения из bmp в gif   Конвертирование изображения из bmp в gif  

0
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,352
15.10.2020, 20:15
Цитата Сообщение от Polina B Посмотреть сообщение
Вот такие ошибки
В строке 114 в комментах что написано? Этот битмап нужно раньше объявить и создать, чтобы потом пользоваться им в разных "кнопках". Объявить можно, например, в классе формы, а создать в событии OnCreate формы.

Добавлено через 2 минуты
А можно на форму посадить Image и потом в коде bmp заменить на Image1.Picture.Bitmap.
А можно и Image посадить на форму и bmp объявить, а в OnCreate формы написать bmp := Image1.Picture.Bitmap и дальше продолжить пользоваться коротким bmp. Только в последнем варианте не делайте bmp.Free, иначе, программе будет плохо.
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
15.10.2020, 20:19  [ТС]
Сделала вот так правильно? Где мне теперь убрать bmp.free?
Миниатюры
Конвертирование изображения из bmp в gif  
0
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,352
15.10.2020, 20:21
Polina B, везде убрать. Битмап, принадлежащий Img1 создаётся и освобождается автоматически.
0
2 / 2 / 0
Регистрация: 08.02.2015
Сообщений: 191
15.10.2020, 20:23  [ТС]
Осталось две ошибки.

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

Конвертирование из emf в bmp
Пытался сконвертировать из emf в bmp след. образом System.IO.FileStream fs = new System.IO.FileStream('c:\dd.bmp',...

Конвертирование BMP в jpg и уменьшение размера.
Есть Bitmap нужно его средствами Delphi конвертировать в *.jpg но при этом ещё и уменьшить размер его в три раза и сохранить на диске. ...

Из .bmp в GIF WinApi
Подскажите как из .bmp файла получить .GIF файл c помощью библиотеки WinApi

Как отконвертировать *.BMP в *.GIF
Доброе время суток. Собственно проблема заключается вот в чем: На форме расположен компонент 'Picture1', в котором попеременно появляются...

как с bmp сохранить в gif
У меня есть картинка бмп которую я загрузил в paint box мне нужно зделать так чтобы она могла сохраняться при нажатии на кнопку в gif...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru