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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертация PNG GIF BMP в JPG в TMemoryStream, Конвертация PNG GIF BMP в JPG в TMemoryS 
:(
    Опции темы
Pcrepair
Дата 3.3.2015, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

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



Добрый день. Есть необходимость конвертации картинок разных форматов в ЖПЕГ, но желательно в TMemoryStream, чтоб все было в ОЗУ
для начала

Код

PicStream:TMemoryStream;
....
PicStream.LoadFromFile(FullPath1+PicNameStr);
TypeOfPic:=KindOfImage(PicStream.Memory);     (*функция возвращает число соответсвующее типу загруженного с Жд файла, все работает*)

if TypeOfPic = 4 then
begin
  ShowMessage('PNG');
  Png2Jpeg(PicStream);        (*вызов процедуры где и должна быть конвертация*)
end;

PicStream.Position := 0;  (*загрузка в ИМИДЖ картинки только ЖПЕГ из потока после трансформации, тут все работает, если ЖПЕГ то вывод в норме*)
JPG:= TJpegImage.Create;
try
  JPG.LoadFromStream(PicStream);
  ImgConv.Picture.Graphic:=JPG;
finally
  FreeAndNil(JPG);
end;

....
procedure Png2Jpeg(aPicStream:TMemoryStream);
var  JPG:TJpegImage;  PNG:TPngImage;  BMP:TBitmap;
begin
  JPG:=TJpegImage.Create;
  PNG:=TPngImage.Create;
  BMP:=TBitmap.Create;
  try
    aPicStream.Position:=0;
    PNG.LoadFromStream(aPicStream);
    //BMP.Assign(PNG);
    //JPG.Assign(BMP);
    JPG.Assign(PNG);

    JPG.SaveToStream(aPicStream);
  finally
    FreeAndNil(JPG);
    FreeAndNil(PNG);
    FreeAndNil(BMP);
  end;
end;


идет ошибка 53, что значит отсутствие ЖПЕГ при выводе в ИМИДЖ результатов конвертации

Вопрос : 
- вообще везде используют только загрузку выгрузку в файл, не поток, может из за этого
- что не учтено?
- может в ХЕ3 что то по другому чем с Д7, откуда все примеры
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Illusion Dolphin
Дата 3.3.2015, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 5
Всего: 63



Цитата

идет ошибка 53, что значит 

Что JPEG отсутсвует или невалидный. Предположу, что aPicStream содержит 2 картинки - [PNG][JPEG] т.к. SaveToStream дописывает в стрим и не удаляет из него ничего. 


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Pcrepair
Дата 3.3.2015, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

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



точно, но кроме того нужно еще и БМП использовать, итаго :

Код

procedure Png2Jpeg(aPicStream:TMemoryStream; aSmoothing:Boolean; aCompressionQuality:Integer);
var  JPG:TJpegImage;  PNG:TPngImage;  BMP:TBitmap;
begin
  JPG:=TJpegImage.Create;
  PNG:=TPngImage.Create;
  BMP:=TBitmap.Create;
  try
    aPicStream.Position:=0;
    PNG.LoadFromStream(aPicStream);
    BMP.Assign(PNG);
    JPG.Assign(BMP);
    aPicStream.Clear;
    aPicStream.Position := 0;
    JPG.SaveToStream(aPicStream);
  finally
    FreeAndNil(JPG);
    FreeAndNil(PNG);
    FreeAndNil(BMP);
  end;
end;

--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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