Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/33: Рейтинг темы: голосов - 33, средняя оценка - 4.76
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99

compess images (Разработка программы)

20.04.2010, 12:53. Показов 7174. Ответов 72
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток уважаемые программисты.
Я совсем недавно начал увлекаться программированием, и мне захотелось освоить Builder. Сейчас мне для себя хочется написать программу, которая будит способна изменять размерность фотографии, по указанным критериям.

все что я пока сделал, это примерно набросал, как хотелось бы видеть этот продукт


Сейчас я хочу организовать отображение изображений gif, jpg и bmp в ListView. Но открывается как-то не так как хотелось бы.
C++
1
2
3
4
5
6
7
8
9
10
11
    void __fastcall TForm1::Button3Click(TObject *Sender)
{
     FILE *FOpen;
 
    if( OpenDialog->Execute() )
    {
        FOpen = fopen(OpenDialog->FileName.c_str(), "r+");
                    }
                ListView1 -> AddItem(OpenDialog->FileName,NULL);
 
    fclose(FOpen);
я столкнулся с несколькими проблемами.
1) не могу добавить одновременно несколько файлов
2) отображается только путь файла


Помогите разобраться как сделать правильное отображение файла. Что б в таблице был виден тип файла и размер.
Миниатюры
compess images (Разработка программы)  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.04.2010, 12:53
Ответы с готовыми решениями:

Как сохранить все превьюшки из google/images или yandex/images или gogo.ru/images
Мне требуется много маленьких картинок, которые можно взять на поиске по картинкам. Скажите пожалуйста, как это сделать? Если сохранять из...

Написание программы с использованием файловых переменных. Разработка программы для работы с текстовым файлом
Помогите пожалуйста : С помощью текстового редактора создать текстовый файл file1. Переписать строки файла file1 в новый текстовый файл...

Разработка программы на С#
Нужна помощь в написании программы на С#, программа не сложная(уровень - 1 курс ВУЗа). Цена договорная. Почта: ivan.bel@mail.ru

72
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
25.04.2010, 18:07  [ТС]
Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста как изменить размер фотографии, есть для этого специальная функция или пройдется её писать самому?
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
25.04.2010, 19:49
Cамый простой способ Canvas->StretchDraw, но используется простейший алгоритм (может в GDI+ что получше добавили)
Если нужно качественное масштабирование, лучше поискать готовый компонент/библиотеку (например Graphics32)
Или делать свою функцию - для начала хотя бы с алгоритмом билинейной интерполяции.
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
27.04.2010, 13:25  [ТС]
Roma_F, я почитал про алгоритмом билинейной интерполяции и про бикубической интерполяции. Понял что первый алгоритм не совсем подходит для сжатия изображений.

Для того чтоб работать с пикселями изображения мне необходимо загружать её в Bitmap?
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
27.04.2010, 14:12
сглаживание изображения
см моё сообщение
0
221 / 135 / 48
Регистрация: 12.04.2010
Сообщений: 248
27.04.2010, 14:40
Цитата Сообщение от HollywooD-new Посмотреть сообщение
Для того чтоб работать с пикселями изображения мне необходимо загружать её в Bitmap?
Если ты загрузил картинку в TImage, то там уже есть TBitmap.
Image->Picture->Bitmap
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
27.04.2010, 15:40
Цитата Сообщение от uggway Посмотреть сообщение
Если ты загрузил картинку в TImage, то там уже есть TBitmap.
Image->Picture->Bitmap
Загрузи jpeg и посмотри что там есть )
0
 Аватар для NobodyElseButMe
6 / 6 / 2
Регистрация: 07.02.2010
Сообщений: 33
27.04.2010, 17:10
С философской точки зрения, - это "изобретение велосипеда".
Потому писать подобную прогу можно только с целью приобретения практических навыков создания математически навороченных программ. Даже для изучения си-билдера цель не совсем подходящая. Лучше сделать прогу со множеством вкладок, пунктов меню, иконками в меню, залипанием кнопок, чек-боксами вместо иконок, ..., реализовать крутой drag'n'drop, желательно system-wide и т.д., чем клепать gui-based приложение для пакетной обработки, которому подошел бы в самый раз консольный интерфейс.
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
27.04.2010, 19:35  [ТС]
Цитата Сообщение от NobodyElseButMe Посмотреть сообщение
С философской точки зрения, - это "изобретение велосипеда".
Потому писать подобную прогу можно только с целью приобретения практических навыков создания математически навороченных программ. Даже для изучения си-билдера цель не совсем подходящая. Лучше сделать прогу со множеством вкладок, пунктов меню, иконками в меню, залипанием кнопок, чек-боксами вместо иконок, ..., реализовать крутой drag'n'drop, желательно system-wide и т.д., чем клепать gui-based приложение для пакетной обработки, которому подошел бы в самый раз консольный интерфейс.
к чему бы это?)))
я просто решил написать такую программу, потому что я бы ей пользовался сам + себе полезно)
0
 Аватар для NobodyElseButMe
6 / 6 / 2
Регистрация: 07.02.2010
Сообщений: 33
27.04.2010, 20:44
К тому, что для качественного изменения размера картинки, достаточно хорошо владеть с++, а для ускорения работы делать ассемблерные вставки. Однако цель, насколько я понял, изучить си-билдер. Вот я и привёл примерный перечень того, к чему надо стремиться. Особенно, drag'n'drop на уровне всей системы, а не только одного приложения и в билдере, и в дельфи вызывает особые затруднения.

ПыСы. Для качественного изменения размера картинки, ещё и математикой
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
27.04.2010, 21:26  [ТС]
NobodyElseButMe, ну я просто не считаю нужным нагружать форму всем подряд только ради того что б на это можно было нажать) хочется сделать удобную программу))
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
30.05.2010, 21:26  [ТС]
добрый вечер, вот наконец то дошли руки, доделать программку. на каком-то из сайтов нашел код для сжатия изображения
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::compressClick(TObject *Sender)
{
 
 for (int i = 0; i < ListView1->Items->Count; i++)
 { if (ListView1->Items->Item[i]->Checked == true)
      {        Graphics::TBitmap * bmp = new Graphics::TBitmap();
        TJPEGImage * jpg = new TJPEGImage();
        jpg->LoadFromFile("file.jpg");
        bmp->Width = 100;
        bmp->Height = 100;
        bmp->Canvas->StretchDraw(TRect(0,0,bmp->Width,bmp->Height),jpg);
        jpg->Assign(bmp);
        jpg->CompressionQuality = 75;
        jpg->PixelFormat = jf24Bit;
        jpg->Compress();
        jpg->SaveToFile("newfile.jpg");
        delete jpg;
        delete bmp;
      }
 }
}
в место "file.jpg" и "newfile.jpg" не могу написать свои переменные где хранится путь файла, для этого я использую Ansitring/ но ничего не получается... помогите разобратся с этим.
вот весь исходинк => size.rar
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
30.05.2010, 22:53
Цитата Сообщение от HollywooD-new Посмотреть сообщение
но ничего не получается
что значит "не получается" - билдер больно бьётся и выключает компьютер?

прототип TGraphic::SaveToFile
C++
1
2
3
virtual void __fastcall SaveToFile(const AnsiString Filename); 
или
virtual void __fastcall SaveToFile(System::UnicodeString Filename);
AnsiString пойдёт в обоих случаях
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
31.05.2010, 12:58  [ТС]
А как пользоваться это виртуальной функцией?
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
31.05.2010, 13:00

C++
1
jpg->SaveToFile("newfile.jpg");
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
31.05.2010, 13:31  [ТС]
то есть вместо
C++
1
jpg->SaveToFile("newfile.jpg");
мне надо написать
C++
1
virtual void __fastcall SaveToFile(const AnsiString path);
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
31.05.2010, 13:48
ответь сначала на мой вопрос
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
31.05.2010, 13:50  [ТС]
а каков вопрос?)
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
31.05.2010, 14:00
Цитата Сообщение от Roma_F Посмотреть сообщение
что значит "не получается" - билдер больно бьётся и выключает компьютер?
какая ошибка
и не видно как ты туда AnsiString передаёшь
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
31.05.2010, 14:24  [ТС]
Мне вообще кажется что я все неправильно делаю...
если я объявляю переменную AnsiString path внутри своей функции то не могу присвоить в неё путь файла т.к. эта функция не знает что такое TListView1->Item
C#
1
2
 AnsiString path = TListView1->Item->SubItems->Strings[2];
        jpg->LoadFromFile(path);
ошибка : Undefined symbol 'TlistView1'
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
31.05.2010, 14:59
вот с этого и надо было начинать
если сделать функцию методом формы, то будет видеть
Form1.h
C++
1
2
3
4
private:    // User declarations
    
public:     // User declarations
    void __fastcall MyFunc (void);
Form1.cpp
C++
1
2
3
4
void __fastcall MyFunc::MyFunc(void)
{
    ...
}
если же функция описана в другом юните (не форме) - передавать строку в параметрах
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.05.2010, 14:59

Разработка программы
Напишите модуль включающий процедуру CallMe и функцию CallCount. Первая выводит на дисплей сообщение, переданное в качестве параметра, а...

Разработка программы!!
Сделайте программу органайзер ну или адресная книга с помощью С#!!

Разработка программы
Здравствуйте, пишу легкую игру и все время сталкиваюсь с тем, что сбиваюсь с &quot;маршрута&quot; данной программы. Например, делаю кнопку не...

Разработка программы..
Здравствуйте, нужна помощь в написание программы, реализ. обработку числового двумерного массива методом поиска;( Спасибо.

Разработка программы
Разработать программу для задания: найти сумму положительных элементов квадратной матрицы (10*10). Подскажите, что-то никак не выходит.


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru