Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

JPEG


Ezorcist ©   (2007-03-09 23:44:00) 

Добрый вечер!

На диске есть файл f.jpeg как мне узнать цвет пиксела [x,y] ?

bmp:=TBitmap.Create;
jp:=TJPEGIMAGE.Create;
jp.LoadFromFile('f.jpeg');

bmp.Width:=jp.Width;
bmp.Height:=jp.Height;
bmp:=TBitmap(JP);

bmp.Canvas.Pixels[x,y]

Так не выходит....


Ezorcist   (2007-03-19 15:24:00) [1]

А если PNG например. Там есть потери? И delphi может с ним работать без дополнительных компонентов?


Amoeba   (2007-03-19 12:51:00) [2]

Если нужно использовать форматы позволяющие сжатие без потерь,то понадобятся дополнительные библиотеки.
Если только считывать - то GraphicEx (бесплатно, с исходниками).
Если еще нужно и сохранять - то существующие библиотеки платные.


Ezorcist   (2007-03-16 22:02:00) [3]


> > Или тогда какой использовать формат, с которым можно было
> > бы работать из deplhi?
>
> Чем выше глубина цвета, тем меньше эффективность сжатия
> без потерь.


Хм... и как комментарий относиться к этой цитате?

PS Вопрос про формат все еще открыт)


Amoeba   (2007-03-16 16:08:00) [4]


> Или тогда какой использовать формат, с которым можно было
> бы работать из deplhi?

Чем выше глубина цвета, тем меньше эффективность сжатия без потерь.


Amoeba   (2007-03-16 16:06:00) [5]

> DrPass ©   (11.03.07 22:14) [10]
>
>
> > Вообще можно сохранить картинку так, что бы цвета всех
> пикселей
> > остались неизменными, и в тоже время присутствовало сжатие
> > данных, те есть формат с сжатием без потерь?
>
> Есть, конечно. Именно это делает любой алгоритм архивации
> :) Ну и само собой, есть форматы со сжатием без потерь,
> например, PCX.

Только вот на 24битном цвете PCX сжатие (в подавляющем большинстве ситуаций) будет весьма незначительным.


Amoeba   (2007-03-16 15:57:00) [6]


> А именно в jpeg без потерь можно загнать?

Только если все пиксели имеют один и тот же цвет. Только пользы от этого немного.


Ezorcist   (2007-03-16 13:44:00) [7]

2 DrPass
А именно в jpeg без потерь можно загнать?
Или тогда какой использовать формат, с которым можно было бы работать из deplhi?


DrPass   (2007-03-11 22:14:00) [8]


> Вообще можно сохранить картинку так, что бы цвета всех пикселей
> остались неизменными, и в тоже время присутствовало сжатие
> данных, те есть формат с сжатием без потерь?

Есть, конечно. Именно это делает любой алгоритм архивации :) Ну и само собой, есть форматы со сжатием без потерь, например, PCX.


Ezorcist   (2007-03-11 22:10:00) [9]

А что вообще значит потеря в качестве? В моем представлении это различие между цветами исходного и полученного пикселя. ??

Вообще можно сохранить картинку так, что бы цвета всех пикселей остались неизменными, и в тоже время присутствовало сжатие данных, те есть формат с сжатием без потерь? (Или единственный способ - сохранить в bmp, а потом упаковать?)


Virgo_Style   (2007-03-10 18:30:00) [10]

Видимо, мое понимание выражения "потери в цвете" отличается от вашего -)


DrPass   (2007-03-10 16:52:00) [11]


> 1) Если CompressionQuality:=100 то это означает что потерь
> в цвете не будет?

Да нет, будут. Только минимальные :)
> 2) Почему если //1 //2 //3 //4 исключить то оба сообщения
> напишут 1 2 3, а если нет, то второе сообщение будет 2 2
> 2 ?


Не претендую на объективность (в исходниках TJpegImage не колупался), но подозреваю, что TJpegImage просто хранит отдельно несжатую картинку. И если ты загружаешь изображение из файла, она создается заново, а если просто делаешь j.Assign(bmp)/bmp.Assign(j), то картинка остается той же.


> 1. afaik, потерь в цвете быть вообще не должно, только в
> качестве.

Потери в качестве = потери в цвете. Кроме цвета, у пикселей вообще-то никаких других характеристик нет


RASkov   (2007-03-10 15:59:00) [12]

> 1. afaik, потерь в цвете быть вообще не должно, только в
> качестве.

Уже может быть неверным цвет. Т.е. его состовляющие...

> 2. разные программы, как правило, дают разные результаты.

Программа-то одна - авторская. :)


Virgo_Style   (2007-03-10 15:46:00) [13]

1. afaik, потерь в цвете быть вообще не должно, только в качестве.
2. разные программы, как правило, дают разные результаты.


RASkov   (2007-03-10 15:46:00) [14]

> [3] Ezorcist   (10.03.07 15:35)

Попробуй
bmp.PixelFormat:=<отличный от pfDevice>


Ezorcist   (2007-03-10 15:35:00) [15]

Подскажите в чем дело пожалуйста?)


Ezorcist   (2007-03-10 00:17:00) [16]

И еще вопрс:

var j:tjpegimage; bmp:Tbitmap; i:integer;
begin

j:=tjpegimage.Create;
bmp:=Tbitmap.Create;

bmp.Width:=10;
bmp.Height:=10;
bmp.Canvas.Pixels[0,0]:=rgb(1,2,3);

i:=bmp.Canvas.Pixels[0,0];
showmessage(inttostr(getRvalue(i))+' '+inttostr(getGvalue(i))+' '+inttostr(getBvalue(i)));

j.CompressionQuality:=100;
j.Assign(bmp);
j.Compress;

j.SaveToFile('C:\file.jpg');    //1
j.Free;                         //2
j:=tjpegimage.Create;           //3
j.LoadFromFile('C:\file.jpg');  //4

bmp.Free;
bmp:=TBitmap.Create;

bmp.Width:=10;
bmp.Height:=10;
bmp.Assign(j);

i:=bmp.Canvas.Pixels[0,0];
showmessage(inttostr(getRvalue(i))+' '+inttostr(getGvalue(i))+' '+inttostr(getBvalue(i)));

1) Если CompressionQuality:=100 то это означает что потерь в цвете не будет?
2) Почему если //1 //2 //3 //4 исключить то оба сообщения напишут 1 2 3, а если нет, то второе сообщение будет 2 2 2 ?


DrPass   (2007-03-09 23:48:00) [17]


> bmp.Width:=jp.Width;
> bmp.Height:=jp.Height;
> bmp:=TBitmap(JP);

bmp.Assign(jp);


Наверх

Титульная страница Поиск, карта сайта Написать письмо