亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java - 將緩沖圖像繪制為可打印與直接繪制為可打印會產生模糊結果

Java - 將緩沖圖像繪制為可打印與直接繪制為可打印會產生模糊結果

弒天下 2023-03-09 15:27:45
正確的方法是在 IO 線程中實際執行邏輯,如果它是非阻塞的。否則,將請求委托給專用線程,如下所示:public class Example {  public static void main(String[] args) {    Undertow server = Undertow.builder()        .addListener(8080, "localhost")        .setHandler(new HttpHandler() {          public void handleRequest(HttpServerExchange exchange)              throws Exception {            if (valueIsPresentInCache(exchange)) {              getValueFromCache();  // non-blocking, can be done from IO thread                       } else {              if (exchange.isInIoThread()) {                exchange.dispatch(this);                // we return immediately, otherwise this request will be                // handled both in IO thread and a Worker thread, throwing                // an exception                return;              }              fetchValueFromDatabase(); // blocking!!!            }          }        })        .build();    server.start();  }}
查看完整描述

1 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

屏幕和打印機是非常不同的媒體。在屏幕上,您通常具有大約 72 到 92 dpi(每英寸像素)的低分辨率。每個像素可以有大量的顏色(24m 或更多)。在打印機上,您通常具有高分辨率(高達 2540 dpi),但只有 2 (b/w) 到 6 種顏色。為了創建中間色,打印機將為您提供光柵化技術,例如半色調。

您創建BufferedImage 的方式嚴重偏向于屏幕輸出:低分辨率、使用中間顏色進行抗鋸齒等。結果會很差。此外,您的輸出意圖丟失了。打印機驅動程序只能看到像素圖。它不知道文本是否存在以及文本在哪里,也無法為其優化輸出。

為了提高質量,您主要有兩種選擇:

  • 如果您只打印線條和文本,并且只使用打印機可以創建的顏色而不混合顏色,則可以創建一個與打印機分辨率和顏色完全匹配的BufferedImage 。那應該給你一個體面的質量。

  • 否則,直接繪制到Printable。然后保留輸出操作的意圖,打印驅動程序可以產生最佳質量。我敢肯定,只要稍作思考,您就可以重構您的代碼,使您仍然擁有一個非常易于維護的結構。


查看完整回答
反對 回復 2023-03-09
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號