Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Просмотр изменений CompressionQuality у жпг, в реальном времени 
V
    Опции темы
Тутанхамец
Дата 18.12.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: нет
Всего: 6



Туп я, наверно. Но не понимаю. (хотя причем тут "но"...) 

Вот хочу пользователю дать возможность менять качество/размер сохраняемого рисунка. Хочу чтобы он потянул "бегунок", и на рисунке отобразилось изменение качества и под рисунком в лэйбле - размер файла. Как во всех нормальных графических редакторах. 

Можно конечно при каждом движении бегунка сохранять рисунок во временный файл, а потом читать, рисовать и "взвешивать". Но это как-то некрасиво и, возможно, медленно. 

Есть способ лучше? 

Я пытаюсь так: 
Код

mj.CompressionQuality :=10;
mj.Compress;
image1.Picture.Assign (mj);

Но после компресса комп выдает ошибку на assign. 

Помогите, пожалуйста.
PM MAIL   Вверх
Snowy
Дата 18.12.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



image1.Picture := mj;
PM MAIL   Вверх
Тутанхамец
Дата 18.12.2006, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: нет
Всего: 6



Тогда уж, чтоб не было ошибки типов:

Код

image1.Picture:= TPicture(mj);


но в этом случае лезет та же самая JPEG-error 42.

Пробовал так:
Код

mj.CompressionQuality :=10;
mj.Compress;
mj.DIBNeeded;
image1.Picture:= TPicture(mj);

и так:
Код

mj.CompressionQuality :=10;
mj.Compress;
mj.DIBNeeded;
image1.Picture.assign(mj);


Видимо, после compress с моей жпгой происходят какие-то неприятные изменения...

PM MAIL   Вверх
Snowy
Дата 18.12.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Цитата(Тутанхамец @  18.12.2006,  13:28 Найти цитируемый пост)
image1.Picture:= TPicture(mj);
Вот так как раз не надо.
Я всё правильно написал.
PM MAIL   Вверх
Тутанхамец
Дата 18.12.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: нет
Всего: 6



Не компилирует:
Incompatible Types: TPicture and TJPEGImage. 

Это Делфи7, если что. Может в новых версиях иначе...
PM MAIL   Вверх
Snowy
Дата 18.12.2006, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Это потому что я соврал smile
Код

  Image1.Picture.Graphic := mj;

PM MAIL   Вверх
Тутанхамец
Дата 18.12.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: нет
Всего: 6



По-моему ты опять соврал... smile

Опять та же ошибка. Типа "проект породил исключение жпг еррор нумер 42". 

Вот мой немудренный код. Черновик, понятное дело. Проблема в button4Click:
Код


procedure TForm1.Button2Click(Sender: TObject);
begin
mj.LoadFromFile(edit1.text);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
mj:=TJPEGImage.Create;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
//mj.DIBNeeded;
image1.Picture.Assign ( mj);
end;


//меняю качество и отображаю изменения
procedure TForm1.Button4Click(Sender: TObject);
begin
mj.CompressionQuality :=10;
mj.Compress;
Image1.Picture.Graphic := mj;
end;


PM MAIL   Вверх
Snowy
Дата 18.12.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Код

uses jpeg;

procedure ShowImage;
var
  mj: TJPEGImage;
  ms: TMemoryStream;
begin
  mj := TJPEGImage.Create;
  ms := TMemoryStream.Create;
  try
    mj.Assign(bmp);
    mj.CompressionQuality := Form1.TrackBar1.Position * 10;
    mj.Compress;
    mj.SaveToStream(ms);
    ms.Position := 0;
    Form1.Caption := 'Size: ' + IntToStr(ms.Size div 1024) + 'кб';
    mj.LoadFromStream(ms);
    Form1.Image1.Picture.Graphic.Assign(mj);
  finally
    mj.Free; ms.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  bmp := TBitmap.Create;
  bmp.LoadFromFile('C:\1.bmp');
  Image1.Picture.Graphic := TBitmap.Create;
  ShowImage;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  bmp.Free;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  ShowImage;
end;

PM MAIL   Вверх
Тутанхамец
Дата 18.12.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: нет
Всего: 6



Ура! Заработало! Большое спасибо, Snowy! smile Сам бы я в жизни не догадался, что тут через потоки надо. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.