Войти

Показать полную графическую версию : [решено] Надо написать прогу для сжатия графических файлов


Viruss
26-07-2010, 12:45
надо написать прогу которая бы сжимала фотки...
подскажите как!!!

lxa85
26-07-2010, 12:56
Viruss, бесплатным архиватором gzip, bzip и т.д. Исходники все имеются.
А вообще, мы тут не в тему.

Drongo
26-07-2010, 13:25
Viruss, Выделил в отдельную тему и с языком определитесь? :) На каком писать будем?

SimSim
26-07-2010, 14:18
Viruss, А обязательно писать, готовые (бесплатные) нельзя использовать?
Contenta-Converter (http://soft.oszone.net/program/6528/Contenta_Converter_BASIC/)
RIOT (http://soft.oszone.net/program/9636/RIOT/)
JBatch_It (http://soft.oszone.net/program/3733/JBatch_It/)

Drongo
26-07-2010, 15:28
SimSim, Тут может быть другая тонкость. Чтобы научиться писать прогу для сжатия, её нужно написать. :)

Viruss
26-07-2010, 17:31
прога должна не только сжимать фотки но и отправлять их на FTP сервер с созданием папки с именем учетной записи пользователя. а пишу на С++

Viruss
26-07-2010, 18:25
как задать путь для сохранения файла???

//сохранение файла...
SavePictureDialog->Execute();
Image->Pictrue->SaveToFile(SavePictureDialog->FileName);

Drongo
26-07-2010, 20:14
Viruss, В инспекторе объектов есть свойство InitialDir
SavePictureDialog1->InitialDir = "C:" ;

Viruss
26-07-2010, 20:34
чет не хочет...

пошло... ток надо что бы он не выводил окно, а сохранял сам в указанное место!

Drongo, SavePictureDialog1->InitialDir = "C:" ; ... работает только на корневой каталог, а если прописать более длинный адрес она(прога) уже его не понимает.
и нет ли варианта чтобы прога сама создавала папку если ее нет???

Viruss
02-08-2010, 16:28
Как создать папку, в С++, при сохранении файла?

И всеже, кто подскажет какой функцией можно сжать файл формата *.JPG в С++?

Viruss
05-08-2010, 12:30
помоите!!!!
Прописываю:

SPD->InitialDir="D:\\GR2";
SPD->FileName=NameFoto->Text+".jpg";
Image1->Picture->SaveToFile(SPD->FileName);

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

SPD->Execute();

но тогда прога выкидывает окно для сохранения, а этого не надо!!!
как сделать так что бы прога сохраняла файл по указанному пути и не выводила окна???

Viruss
05-08-2010, 17:05
между фотками надо переключаться, хочу использовать компонент UpDown вкладка Win32, подскажите каким оператором пользоваться...

Viruss
20-08-2010, 12:53
помогите, очень надо....
Есть текст:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TJPEGImage *ptJpg=new TJPEGImage;
Graphics::TBitmap *ptBmp=new Graphics::TBitmap;
ptJpg->LoadFromFile("a.jpg"); //Загружаем файл .jpg
Canvas->Draw(0,0,ptJpg); //Нприсуем исходное изображение
ptBmp->Width=3*ptJpg->Width/4; //Уменьшаем на 3/4
ptBmp->Height=3*ptJpg->Height/4;
ptBmp->Canvas->StretchDraw(Rect(0,0,ptBmp->Width,ptBmp->Height),ptJpg); //Рисуем отмасштабированное изображение на канву
Canvas->Draw(ptJpg->Width,0,ptBmp); //Можем нарисовать измененное изображение //(сдвинуто на ptJpg->Width вправо)
ptJpg->Assign(ptBmp);
ptJpg->CompressionQuality = 75; //Степень сжатия (качество) 1..100
ptJpg->Compress();
ptJpg->SaveToFile("a1.jpg"); //Можно изменить степень сжатия
delete ptJpg;
delete ptBmp;
}

Все работает правильно, но один касяк... ptJpg->LoadFromFile("a.jpg"); - эта функция воспринимает только имя файла, а если прописать путь к файлу, она работает некорректно.
Помогите!!!!!!!!!!!!!!

Drongo
20-08-2010, 13:21
а если прописать путь к файлу, она работает некорректно. »Путь прописывается через двойной слеш, например:
C:\\MyFolder\\Test\\a.jpg

Viruss
30-08-2010, 11:20
void __fastcall TForm2::OtpClick(TObject *Sender)
{
FTP->UserID="xxx";
FTP->Password="xxx";
SPD->InitialDir="ftp://10.112.56.2//proga";
FTP->Host="ftp://10.112.56.2";
FTP->Connect();
FTP->ChangeDir("IT");
}

SPD->FileName=NameFoto->Text+".jpg";
Image1->Picture->SaveToFile(SPD->FileName);
FTP->Disconnect();


Кода проа пытыеться приконектиться к FTP... выкидывает ошибку...

Viruss
30-08-2010, 13:02
подскажите.... может для работы с FTP сервером какую-нибудь библиотеку надо подключить???

Dr.Dark
31-08-2010, 03:11
Вот для примера простой код который работает.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
FTP->Host="XXX.XXX.XXX.XXX";
FTP->Username="user";
FTP->Password="password";
FTP->Connect();
FTP->Put("C:\\1.jpg", "1.jpg", 0);
ShowMessage("Done");
}

Писал в билдере. Использовал компонент TIdFTP... Вот и всё...

Viruss
05-05-2011, 14:39
Есть прога, которая сжимает фото и отправляет на FTP сервер...


TJPEGImage *ptJpg=new TJPEGImage;
Graphics::TBitmap *ptBmp=new Graphics::TBitmap;

ptJpg->LoadFromFile(OPD1->FileName); //Загружаем файл .jpg

ptBmp->Width=1.6*ptJpg->Width/4; //Уменьшаем на 1/4
ptBmp->Height=1.6*ptJpg->Height/4;

ptBmp->Canvas->StretchDraw(Rect(0,0,ptBmp->Width,ptBmp->Height),ptJpg); //Рисуем отмасштабированное изображение на канву

ptJpg->Assign(ptBmp);

ptJpg->CompressionQuality = 50; //Степень сжатия (качество) 1..100
ptJpg->Compress();
puut=SPD->FileName+".jpg";

ptJpg->SaveToFile(SPD->FileName+".jpg"); //Можно изменить степень сжатия
delete ptJpg;

delete ptBmp;


фотография после сжатия сохраняется в ту же папку, откуда был оригинал...
а надо что бы она сохранялась в папку C:\TEMP. И после всех дествий необходимо очистить данную папку...




© OSzone.net 2001-2012