Текущий архив: 2014.08.17;
Скачать: CL | DM;
ВнизКачественная печать изображений Найти похожие ветки
← →
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;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.003 c