Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Изменить размер картинки   Найти похожие ветки 

 
FiLimon ©   (2003-10-24 23:31) [0]

Вопрос такой.
Нужно загрузить jpg или gif.
Затем изменить его высоту и ширину в пикселях
и сохранить на диск.

Заранее благодарен.


 
Rouse_ ©   (2003-10-25 00:48) [1]

Без отображения на TBitMap не получится. Вообщето любой формат, будь то Jpg или ICO в конечном представлении является битовой маской на канвасе.
А по сабжу StretchBlt

Желаю успехов

ЗЫ: Может кто и до меня ответил


 
FiLimon ©   (2003-10-25 10:25) [2]

Спасибо конечно, но мне это отображать не надо. Мне надо только изменить размер и сохранить с новыми параметрами. Кстати, что такое StretchBlt?


 
andre ©   (2003-10-26 17:20) [3]


> Кстати, что такое StretchBlt?

Это WinApi функция, которая масштабирует изображение.


 
Mihey ©   (2003-10-26 21:07) [4]

>А по сабжу StretchBlt

Ё-моё, 2003 год, Pentuim"ы V, StretchBlt... Я плакалъ.


 
Asteroid ©   (2003-10-26 22:06) [5]

> Mihey ©   (26.10.03 21:07) [4]
А есть другие предложения? Писать собственную ф-цию растяжения с использованием SSE2?


 
andre ©   (2003-10-26 22:31) [6]

А чем WinApi не устраивает? Всего пара строк, и вуаля (только про пропорции не надо забывать)и всё делается в памяти безо всякого отображения.


 
Mihey ©   (2003-10-26 22:38) [7]

2 Ребята:

МНЕ, пользователю, нужно качество, а не простота ВАШЕЙ, программерской, работы.


 
FiLimon ©   (2003-10-27 08:03) [8]

Ниже мой код. Что хорошо, что нехорошо.
Может можно обойтись без Canvas.StretchDraw?
Покажите как можно использовать StretchBlt


program Project1;
{$APPTYPE CONSOLE}
uses
 SysUtils,classes,graphics,Jpeg;

var
   FJpeg    : TJpegImage;
   FBmp     : TBitmap;
   JpegFile1, JpegFile2 : AnsiString;
   StreamJpg  : TStream;
begin

 JpegFile1:="1.jpg";
 JpegFile2:="2.jpg";

if FileExists(JpegFile1) then
begin
 FJpeg := TJpegImage.Create;
 FBmp  := TBitmap.Create;

 StreamJpg := TFileStream.Create(JpegFile1, fmOpenRead);
 try
   if FJpeg.PixelFormat = jf24bit then
     FBmp.PixelFormat := pf24bit
   else
     FBmp.PixelFormat := pf8bit;

   FJpeg.LoadFromStream(StreamJpg);

   FBmp.Width := 700;
   FBmp.Height := 700;
   FBmp.Canvas.CopyMode:=cmSrcCopy;
   FBmp.Canvas.StretchDraw(Rect,0,0,FBmp.Width,FBmp.Height),FJpeg);
 finally
   StreamJpg.Free;
 end;

 if FileExists(JpegFile2) then DeleteFile(JpegFile2);
 StreamJpg := TFileStream.Create(JpegFile2,fmCreate);
 try
   if FBmp.PixelFormat = pf24bit then
     FJpeg.PixelFormat := jf24bit
   else
     FJpeg.PixelFormat := jf8bit;

   FJpeg.Assign(FBmp);
   FJpeg.SaveToStream(StreamJpg);

 finally
   StreamJpg.Free;
 end;
 FBmp.Free;
 FJpeg.Free;
end;
end.


 
Depth   (2003-10-28 14:16) [9]

посмотри:

http://delphiclub.ru/forums/index.php?act=ST&f=4&t=362&s=418b3054c53bd1e223262d8f381e0b9e


 
Als   (2003-11-10 12:58) [10]

FiLimon ©:

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


 
FiLimon ©   (2003-11-16 09:38) [11]

там надо добавить FJpeg.Performance:=jpBestQuality; и с качеством все будет в порядке.


 
Галина   (2004-01-22 09:03) [12]

А как просто изменить размер изображения с отображением в форме. Кто-нибудь поделитесь опытом...


 
Mantic0re   (2004-01-22 11:01) [13]

2 Галина:

  Смотри выше (StretchBlt)..

2 Asteroid:
 
  можно на SSE, но для сплайнов,
  лучше ММХ для билинейной интерполяции

2 Mihey:
 
>Ё-моё, 2003 год, Pentuim"ы V, StretchBlt... Я плакалъ.
  А плакать не надо, надо объяснять людям..


 
Mantic0re   (2004-01-22 11:04) [14]

Собсно по сабжу - тебе нужно загружать
изображение в память, изменять размер, а затем сохранять..

Возможностей у тебя не много:
* либо писать всё самому (что я делал в этом случае)
* либо использовать библиотеки сторонних разработчиков
(если JPEG.DCU не позволяет это делать)



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.022 c
4-1077375989
Юрий Ж.
2004-02-21 18:06
2004.04.25
Дата создания директории...


1-1081664329
Franzy
2004-04-11 10:18
2004.04.25
Copyfile /help


3-1080647794
Draught
2004-03-30 15:56
2004.04.25
Подключение к БД под SQL сервером


11-1064752304
Oxy
2003-09-28 16:31
2004.04.25
Почему KOL-овская прога вылетает при попытке поставить хук?


4-1077406924
OverSet
2004-02-22 02:42
2004.04.25
Перемещение заголовка окна