Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.04 c
8-1073496651
The xXx
2004-01-07 20:30
2004.04.25
Media Player


3-1080587672
clickmaker
2004-03-29 23:14
2004.04.25
ADOConnection time out при попытке создания >2 соединений


1-1081495413
baromir
2004-04-09 11:23
2004.04.25
Запуск проверки при открытии формы (+)


3-1080053034
Miwa
2004-03-23 17:43
2004.04.25
Или DBGridEh, или код, или еще чего, но глючит прикольно:


14-1081083425
mfender
2004-04-04 16:57
2004.04.25
TaskManager





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский