נמנע התנדנדות בביצועים בעת ציור מעל תמונות מדוחסות

נמנע התנדנדות בביצועים בעת ציור מעל תמונות מדוחסות

ישנם רגעים שבהם ברצונך לבצע פעולות גרפיות נרחבות ביותר על תמונה מדוחסת. כאשר Aspose.PSD צריך לדחוס ולפשוט תמונות במהלך הפעלתם, עשוי להתמוטט ביכולת הביצועים. ציור מעל תמונות מדוחסות עשוי גם לגרום לעונש בביצועים.

פתרון

כדי למנוע התנדנדות בביצועים, אנו ממליצים להמיר את התמונה לפורמט שאינו מדוחס, או פורמט גולמי, לפני ביצוע פעולות גרפיות.

שימוש בנתיב קובץ

בדוגמה שלהלן, תמונת PSD מתמרמזת לפורמט גולמי (ללא דחיפות) ומתבצעת שמירה על דיסק. לאחר מכן התמונה לא מדוחסת נטענת מחדש לפני ביצוע פעולות גרפיות עליה. טכניקה זו תקפה גם עבור קבצי BMP ו-GIF.

String dataDir = Utils.getDataDir(UncompressedImageUsingFile.class) + "PSD/";
// Load a PSD file as an image and cast it into PsdImage
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "layers.psd")) {
PsdOptions saveOptions = new PsdOptions();
saveOptions.setCompressionMethod(CompressionMethod.Raw);
psdImage.save(dataDir + "uncompressed_out.psd", saveOptions);
// Now reopen the newly created image.
PsdImage img = (PsdImage) Image.load(dataDir + "uncompressed_out.psd");
Graphics graphics = new Graphics(img);
// Perform graphics operations.
}

שימוש באובייקט זרם

קטע הקוד הבא מציג כיצד תמונת PSD מתמרמזת לפורמט גולמי (ללא דחיפות) ומתבצעת שמירה על דיסק באמצעות זרם.

String dataDir = Utils.getDataDir(UncompressedImageStreamObject.class) + "PSD/";
ByteArrayOutputStream ms = new ByteArrayOutputStream();
// Load a PSD file as an image and cast it into PsdImage
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "layers.psd")) {
PsdOptions saveOptions = new PsdOptions();
saveOptions.setCompressionMethod(CompressionMethod.Raw);
psdImage.save(ms, saveOptions);
// Now reopen the newly created image. But first seek to the beginning of stream since after saving seek is at the end now.
ms.reset();
PsdImage img = (PsdImage) Image.load(new ByteArrayInputStream(ms.toByteArray()));
Graphics graphics = new Graphics(psdImage);
// Perform graphics operations.
}