![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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);