簡體   English   中英

如何使用Image.GetInstance()創建唯一的圖像?

[英]How to create unique images with Image.GetInstance()?

我需要使用接受原始位圖數據的GetInstance()變體:

Image.GetInstance(int width, int height, int components, int bpc, byte[] data);

但是,如果我反復調用它,即使位圖數據實際上是不同的,我也會得到第一個實例,而不是新的實例。 這是一個非常好的功能,例如基於路徑的固定圖像,但對於動態圖像生成卻不是那么好。 如何保證每次都有新的位圖?

版本5.5.3。

請看一下RawImages示例。 在此示例中,我使用您提到的方法創建了8張圖像,其中一張在顏色空間灰色中,三個在顏色空間RGB中,四個在顏色空間CMYK中:

Image gray = Image.getInstance(1, 1, 1, 8, new byte[] { (byte)0x80 });
gray.scaleAbsolute(30, 30);
Image red = Image.getInstance(1, 1, 3, 8, new byte[] { (byte)255, (byte)0, (byte)0 });
red.scaleAbsolute(30, 30);
Image green = Image.getInstance(1, 1, 3, 8, new byte[] { (byte)0, (byte)255, (byte)0 });
green.scaleAbsolute(30, 30);
Image blue = Image.getInstance(1, 1, 3, 8, new byte[] { (byte)0, (byte)0, (byte)255, });
blue.scaleAbsolute(30, 30);
Image cyan = Image.getInstance(1, 1, 4, 8, new byte[] { (byte)255, (byte)0, (byte)0, (byte)0 });
cyan.scaleAbsolute(30, 30);
Image magenta = Image.getInstance(1, 1, 4, 8, new byte[] { (byte)0, (byte)255, (byte)0, (byte)0 });
magenta.scaleAbsolute(30, 30);
Image yellow = Image.getInstance(1, 1, 4, 8, new byte[] { (byte)0, (byte)0, (byte)255, (byte)0 });
yellow.scaleAbsolute(30, 30);
Image black = Image.getInstance(1, 1, 4, 8, new byte[] { (byte)0, (byte)0, (byte)0, (byte)255 });
black.scaleAbsolute(30, 30);

如您所見,每個圖像的大小恰好是一個像素,因此我選擇了不同的byte[]值,以便獲得灰色,紅色,綠色,藍色,青色,品紅色,黃色和黑色的像素。 我還將這些圖像縮放到更大的尺寸(否則將很難看到它們)。

現在,我添加如下圖像:

document.add(gray);
document.add(red);
document.add(green);
document.add(blue);
document.add(cyan);
document.add(magenta);
document.add(yellow);
document.add(black);
document.close();

結果與您提出的問題不符raw_images.pdf

在此處輸入圖片說明

您的代碼中肯定還有另一個錯誤,但是由於您不共享任何代碼,因此沒有人可以回答您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM