Вверх ↑
Этот топик читают: Гость
Ответов: 1713
Рейтинг: 149
#1: 2018-07-14 17:22:26 ЛС | профиль | цитата
Метод doSave компонента Jpeg никак не реагирует на параметр Quality. В коде Quality используется только в методе doLoadFromBitmap. При этом в компоненте PictureStream всё реализовано правильно, и метод doSave использует св-во CompressionQuality.

Редактировалось 1 раз(а), последний 2018-07-14 17:22:52
карма: 5
0
vip
#1.1контекстная реклама от партнеров
Ответов: 3914
Рейтинг: 620
#2: 2018-07-15 12:39:53 ЛС | профиль | цитата
Так, вроде, и правильно: Quality используется при создании JPEG (в данном случае, создание происходит из BMP методом doLoadFromBitmap). Все остальные методы работают с уже готовым JPEG (загрузка/сохранение). Если нужно "сохранить JPEG с другим качеством", нужно JPEG преобразовать в BMP, затем обратно в JPEG с другим Quality. Если нужно, можно для этой цели добавить метод doRecompress ("пережать JPEG с другим качеством") - выполнить в коде преобразование JPEG->BMP->JPEG[указанное Quality].

А вот значение свойства Quality по-умолчанию стоит изменить с 0 на 100 (или, возможно, 99) - всё равно ручками каждый раз приходится править.

Редактировалось 1 раз(а), последний 2018-07-15 12:42:29
карма: 19

0
Ответов: 1713
Рейтинг: 149
#3: 2018-07-16 16:18:32 ЛС | профиль | цитата
Да, я говорю как раз про "сохранить JPEG с другим качеством".
Netspirit писал(а):
JPEG преобразовать в BMP, затем обратно в JPEG с другим Quality

Вот так, что ли?

Add(Jpeg,4374258,420,322)
{
Point(doBitmap)
Point(doLoadFromBitmap)
link(onBitmap,4374258:doLoadFromBitmap,[(464,328)(464,362)(407,362)(407,349)])
}
Add(Button,7564044,294,322)
{
Left=315
Top=320
link(onClick,8315220:doEvent1,[])
}
Add(Hub,8315220,357,322)
{
OutCount=3
link(onEvent1,4374258:doLoad,[])
link(onEvent2,4374258:doBitmap,[])
link(onEvent3,4374258:doSave,[(395,342)(395,335)])
}

Всё-таки это изврат. Обычно компрессия производится как раз при сохранении.

ps.
Netspirit писал(а):
значение свойства Quality по-умолчанию стоит изменить с 0 на 100

А вот это как раз не получится, т.к. нарушит совместимость (если в настройках стоит опция "сохранять изменения").
карма: 5
0
Ответов: 3914
Рейтинг: 620
#4: 2018-07-16 16:37:52 ЛС | профиль | цитата
3042 писал(а):
Вот так, что ли?
Да, только выдаёт ошибку, если onBitmap сразу подать на doLoadFromBitmap. Нужно предварительно копировать Bitmap:

Add(MainForm,2953706,21,105)
{
Position=1
}
Add(Jpeg,4374258,336,140)
{
Quality=80
Point(doBitmap)
Point(doLoadFromBitmap)
link(onBitmap,4820773:doEvent1,[])
}
Add(Button,7564044,168,140)
{
Left=145
Top=25
Data=String(111.jpg)
link(onClick,8315220:doEvent1,[])
AddHint(-20,45,60,13,Data)
}
Add(Hub,8315220,231,140)
{
OutCount=3
link(onEvent1,4374258:doLoad,[])
link(onEvent2,4374258:doBitmap,[(283,153)(283,160)])
link(onEvent3,4374258:doSave,[(311,169)(311,153)])
}
Add(Bitmap,15977892,427,140)
{
}
Add(Hub,4820773,378,140)
{
OutCount=3
link(onEvent1,15977892:doLoad,[])
link(onEvent2,5004013:doData,[(406,153)(406,195)])
link(onEvent3,15977892:doClear,[(415,160)(415,153)])
}
Add(DoData,5004013,427,189)
{
link(onEventData,4374258:doLoadFromBitmap,[(490,195)(490,252)(324,252)(324,167)])
link(Data,15977892:Bitmap,[])
}

3042 писал(а):
т.к. нарушит совместимость (если в настройках стоит опция "сохранять изменения")
Не понимаю. Если у кого в схеме стояло 0 (а это имеет смысл только если бы хотели получить Quality из потока, причём, из второго элемента MT-потока, так как первым элементом должен быть Bitmap), то оно станет равным новому значению - в этом случае нужно будет поправить. Во всех остальных случаях кто какое значение поставил, то и останется.

Редактировалось 4 раз(а), последний 2018-07-16 17:48:34
карма: 19

0
Ответов: 1713
Рейтинг: 149
#5: 2018-07-16 17:26:50 ЛС | профиль | цитата
Netspirit писал(а):
Не понимаю. Если у кого в схеме стояло 0 (а это имеет смысл только если бы хотели получить Qulity из потока, причём, из второго элемента MT-потока, так как первым элементом должен быть Bitmap), то оно станет равным новому значению - в этом случае нужно будет поправить. Во всех остальных случаях кто какое значение поставил, то и останется.

А, ну да, я про компонент PictureStream подумал, там 75 стоит.


А по теме: всё-таки изврат, да ещё с дополнительным копированием картинки.
карма: 5
0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)