Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для ijonhson
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584

Сохранить изображения в новом формате

13.03.2013, 11:12. Показов 965. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток суть вопроса как сохранить изображение так чтоб его могла прочитать только моя программа, с bmp проблем нет,массив цветов пикселей можно сохранить в бинарный файл и шифрануть как угодно записав в виде структуры
C++
1
2
3
4
struct bmp{
int width,height;
int *mas=new int[height*width]
};
а если это jpeg, номер с
C++
1
2
int a;
a=Image1->Picture->Bitmap->Canvas->pixel[x][y]
не проходит,отсюда ещё один вопрос есть ли в билдере стандартные средства для конвертации любого формата изображений в bmp сразу при открытии,дабы на Image поступал уже bmp,я до этого пользовался стандартным OpenPictureDialog.
Может есть более простой метод для решения подобных задач,заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2013, 11:12
Ответы с готовыми решениями:

Масштабировать изображения в JPEG-формате
Здравствуйте! Я занимаюсь программированием в системе С++Builder. И вот столкнулся с задачей. Имеется ли возможность масштабировать...

Получить иконку в формате ico и сохранить ее в формате png
Здравствуйте. Мне нужно получить иконку в формате ico и сохранить ее в формате png. Использую img.Picture.Icon.SaveToFile, но...

Google рассказала подробнее о новом графическом формате WebP
Google сегодня обнародовала более подробные данные о создаваемом в недрах компании новом графическом формате WebP, который должен...

5
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
13.03.2013, 14:56
C++
1
TBitmap->Assign(TJPGImage); // (схема)
Так пробовал?
1
 Аватар для ijonhson
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
13.03.2013, 18:53  [ТС]
спасибо отсюда ещё один вопрос как из image вытянуть формат открытого файла
придётся как-то так делать:
C++
1
2
3
4
5
6
switch (format)
{
case jpeg:....
case ico:..
case bmp:...
}
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
13.03.2013, 21:31
Отсюда другой вопрос - а как ты их вообще открываешь? Там так-то можно расширение посмотреть в имени файла.
0
 Аватар для ijonhson
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
13.03.2013, 23:13  [ТС]
можно filename у opendialog ,но тогда функцию писать надо в стиле сравнить всё что после точки с вариантами расширения надеялся что есть шо-то стандартное
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.03.2013, 12:23
По расширению проще всего, другие способы дороже встанут. Расширение можно извлекать функцией ExtractFileExt().

Добавлено через 4 часа 2 минуты
Например, вот по такой изящной схемке с делегатами можно организовать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class TForm1
               : public TForm
{
__published: // IDE-managed Components
    TOpenDialog *dlg_open;
    void __fastcall FormClick( TObject *Sender );
 
private: // User declarations
public:  // User declarations
    void __fastcall act_on_bmp( String s ) {ShowMessage( "act_on_bmp method, s = " + s );}
    void __fastcall act_on_jpg( String s ) {ShowMessage( "act_on_jpg method, s = " + s );}
    void __fastcall act_on_png( String s ) {ShowMessage( "act_on_png method, s = " + s );}
 
    __fastcall TForm1( TComponent *Owner );
    __fastcall ~TForm1( );
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <map>
typedef void __fastcall( __closure * act_on_ext_fptr )( String );
std::map <String, act_on_ext_fptr> ext_reference;
// ---------------------------------------------------------------------------
__fastcall TForm1::TForm1( TComponent *Owner )
               : TForm( Owner )
{
    ext_reference[".bmp"] = &act_on_bmp;
    ext_reference[".jpg"] = &act_on_jpg;
    ext_reference[".jpeg"] = &act_on_jpg;
    ext_reference[".png"] = &act_on_png;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::FormClick( TObject *Sender )
{
    if ( dlg_open->Execute( ) ) {
        String ext = ExtractFileExt( dlg_open->FileName ).LowerCase( );
        ext_reference[ext]( ext );
    }
}
Добавлено через 4 минуты
(Расширение делегатам передается просто в целях демонстрации передачи параметров, никакой нужды в этом нет.)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2013, 12:23
Помогаю со студенческими работами здесь

Макрос сохранения файла в новом формате в стандартную папку
Здравствуйте. Появилась проблема: работаю с огромным количеством одинаковых excell файлов. Сделал макрос который обрабатывает документ. Но...

Как при нажатии кнопки "сохранить" выдать окно с выбором места сохранения и сохранить текст, написанный в ТекстБокс, в формате .doc(x)
Уважаемы дамы и господа! Требуется чтоб при нажатии кнопки &quot;сохранить&quot; программа выводила окно с выбором места сохранения и сохраняла...

Как сохранить учётные данные в новом созданном файле?
Медицинский учет детей, посещающих детский сад: что бы сохранило результат в новом созданном файле, которым на 1 июля текущего года...

Сохранить в новом файле те названия, которые встречаются в двух исходных
Помогите пожалуйста решить задачку! Программа должна прочитать данные из двух указанных текстовых файлов, содержащих записи с...

Как каждый символ двумерного массива сохранить в новом массиве
Имеем двумерный массив, который должен проходиться циклом, сохраняя каждый символ в новом массиве!!


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru