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

Вниз

Качественная печать изображений   Найти похожие ветки 

 
Deltas ©   (2012-01-23 18:09) [0]

Есть объект bmp: TBitmap. В нем содержится изображение примерно 1100 х 900. При отображении картинки на экране (допустим в TImage) все красиво, но при печати качество изображения намного хуже. Разрешение страницы A4 принтера по умолчанию около 7000х5000, dpi = 600. Поэтому при печати на холст принтера я использую код

Printer.BeginDoc;
try
 Printer.Canvas.StretchDraw(Rect(0, 0, Printer.PageWidth, Printer.PageHeight), bmp);
finally
 Printer.EndDoc;
end;

Как можно распечатать исходное изображение без кракозябр? То есть гладким, без ухудшения качества печати, вызванным необходимостью проецировать исходное изображение на страницу принтера.


 
han_malign   (2012-01-23 18:20) [1]

GetBrushOrgEx(Canvas.Handle, pt);
SetStretchMode(Canvas.Handle, HALFTONE);
SetBrushOrgEx(Canvas.Handle, pt.x, pt.y, nil);


 
QAZ   (2012-01-23 18:57) [2]


> Как можно распечатать исходное изображение без кракозябр?
>  То есть гладким, без ухудшения качества печати

взять изображение соответствующего размера,и напечатать


 
Deltas ©   (2012-01-23 19:33) [3]


> han_malign   (23.01.12 18:20) [1]
> GetBrushOrgEx(Canvas.Handle, pt);
> SetStretchMode(Canvas.Handle, HALFTONE);
> SetBrushOrgEx(Canvas.Handle, pt.x, pt.y, nil);


Поэксперементировал, никаких визуально заметных изменений нет.


> QAZ   (23.01.12 18:57) [2]
>
> взять изображение соответствующего размера,и напечатать


Ох, откуда же я его возьму? Я же написал, что есть исходное изображение 1100х900. Это условие задачи.


 
QAZ   (2012-01-23 19:59) [4]


> Ох, откуда же я его возьму? Я же написал, что есть исходное
> изображение 1100х900. Это условие задачи.

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


 
Deltas ©   (2012-01-23 20:24) [5]


> QAZ   (23.01.12 19:59) [4]

Нельзя ничего перерисовать. Изображение - это входной сигнал. Представь, что это учебная задача.


 
QAZ   (2012-01-23 20:29) [6]

удачи


 
kudatsky   (2012-01-24 12:23) [7]

Загрузи картинку в Word и распечатай.
Сравни оба варианта. Может, дело не
в программе ?


 
QAZ   (2012-01-24 14:58) [8]


> Загрузи картинку в Word и распечатай

чеж не в фотошоп то?


 
Дмитрий Белькевич   (2012-01-25 23:49) [9]

мы у себя как то так печатаем...


procedure PrintDIB(ACanvas: TCanvas; const DestRect: TRect; const DIB: TDIB); inline;
var
//  Image: Pointer;
Pt: TPoint;
begin
GetBrushOrgEx(ACanvas.Handle, Pt);
SetStretchBltMode(ACanvas.Handle, COLORONCOLOR);
SetBrushOrgEx(ACanvas.Handle, Pt.x, Pt.y, @Pt);
//  Image := ;
StretchDIBits(ACanvas.Handle, DestRect.Left,
 DestRect.Top, // Destination Origin
 DestRect.Right - DestRect.Left, // Destination Width
 DestRect.Bottom - DestRect.Top, // Destination Height
 0, 0, // Source Origin
 DIB.Width, DIB.Height, // Source Width & Height
 DIB.PBits, DIB.BitmapInfo^, DIB_RGB_COLORS, SRCCOPY);
end;


 
MultIfleX   (2012-01-26 07:48) [10]

Используя для отрисовки GDI+, можно добиться неплохого сглаживания при растягивании изображения, если тебя волнует именно этот момент. Хотя, как то попадался и пример (на Delphi) масштабирования битмапа с бикубической интерполяцией...Но у тебя во первых непропорциональное масштабирование производится, во вторых - понизь DPI печати, ато ты ничего хорошего не получишь.  Да и маловато разрешение для печати на А4.. многого не ожидай.


 
Медвежонок Пятачок ©   (2012-01-26 13:47) [11]

При отображении картинки на экране (допустим в TImage) все красиво,

Это оптический обман.
Вызванный изображением построенным из светящихся точек.
При этом глазу достаточно 72-96 дпи и он ничего не заметит.

А на бумаге все сложнее. Точки не светятся, а отражают. И глаз здесь уже не обманешь.

И при 600 dpi получим картинку 1.8 x 1.5 дюйма. И она будет такая же "хорошая " как и на экране.

Так что правильный вопрос - это не как качественно напечатать, а как качественно заапскейлить исходник.

Ответ: при таких размерах исходника - ну никак.


 
Дмитрий Белькевич   (2012-01-26 20:29) [12]

>Ответ: при таких размерах исходника - ну никак.

1100 х 900, насколько я помню, достаточно качественно напечатается на A4.

Другое дело, что тут куча влияющих факторов - начиная от кода вывода заканчивая драйверами, качеством самого принтера и бумаги.


 
Медвежонок Пятачок ©   (2012-01-27 08:59) [13]

насколько я знаю, даже 1х1 достаточно качественно напечатается и на A3.

и кучи никакой нет.
есть один единственный вопрос - как отмасштабировать рисунок вверх.


 
Дмитрий Белькевич   (2012-01-27 17:21) [14]

>насколько я знаю, даже 1х1 достаточно качественно напечатается и на A3.

почему же ты пишешь:

>Ответ: при таких размерах исходника - ну никак.

То 1100х900 не достаточно, то 1х1 - достаточно?


 
Anatoly Podgoretsky ©   (2012-01-27 17:33) [15]

> Дмитрий Белькевич  (27.01.2012 17:21:14)  [14]

1x1 будет качественно даже в виде анаморфа, а вот 1100х900 нет


 
Медвежонок Пятачок ©   (2012-01-27 21:49) [16]

почему же ты пишешь:

потому что сарказм. что 1100 точек, что одна точка - разницы то нет.
и то и это будет "достаточно" качественно на а4



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

Форум: "Основная";
Текущий архив: 2014.08.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
15-1390167459
Пит
2014-01-20 01:37
2014.08.17
Посоветуйте что-то типа двухколоночного CheckBox а


15-1390302290
Дмитрий СС
2014-01-21 15:04
2014.08.17
rs232 через сеть


15-1389174438
Novicer
2014-01-08 13:47
2014.08.17
Как установить Firebird вместе с прогой?


2-1380095033
darthnihilus
2013-09-25 11:43
2014.08.17
Delphi + Excel 2003


15-1390163402
Юрий
2014-01-20 00:30
2014.08.17
С днем рождения ! 20 января 2014 понедельник





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский