برش، چرخش و تغییر اندازه تصاویر
برش تصاویر
برش تصویر معمولاً به حذف بخشهای خارجی یک تصویر برای بهبود قاببندی اشاره دارد. برش ممکن است همچنین برای بریدن بخشی از تصویر برای تمرکز بر یک ناحیه خاص استفاده شود. رابط برنامهٔ کاربردی Aspose.PSD پشتیبانی از دو رویکرد مختلف برای برش تصویر دارد: از طریق شیفتها و مستطیل.
برش تصویر از طریق شیفتها
کلاس RasterImage نسخهٔ بارگیری بیشلاین Crop را فراهم کرده است که ۴ مقدار عددی از ترکیب شمال، راست، بالا و پایین را میپذیرد. بر اساس این چهار مقدار، متد Crop مرزهای تصویر را به سمت مرکز تصویر حرکت داده و بخش خارجی را دور میاندازد. قطعه کد زیر نشان میدهد چگونه یک تصویر را با استفاده از شیفت برش دهیم.
String dataDir = Utils.getDataDir(CroppingbyShifts.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "CroppingByShifts_out.jpg"; | |
// Load an existing image into an instance of RasterImage class | |
try (RasterImage rasterImage = (RasterImage) Image.load(sourceFile)) { | |
// Before cropping, the image should be cached for better performance | |
if (!rasterImage.isCached()) { | |
rasterImage.cacheData(); | |
} | |
// Define shift values for all four sides | |
int leftShift = 10; | |
int rightShift = 10; | |
int topShift = 10; | |
int bottomShift = 10; | |
// Based on the shift values, apply the cropping on image Crop method will shift the image bounds toward the center of image and Save the results to disk | |
rasterImage.crop(leftShift, rightShift, topShift, bottomShift); | |
rasterImage.save(destName, new JpegOptions()); | |
} |
برش تصویر از طریق مستطیل
کلاس RasterImage نسخهٔ دیگر از متد برش را فراهم کرده است که یک نمونه از کلاس Rectangle را میپذیرد. شما میتوانید با فراهم کردن مرزهای مورد نظر به شیئ Rectangle قسمتی از تصویر را برش دهید. قطعه کد زیر نشان میدهد چگونه هر تصویری را با استفاده از مستطیل برش دهیم.
String dataDir = Utils.getDataDir(CroppingbyRectangle.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "CroppingByRectangle_out.jpg"; | |
// Load an existing image into an instance of RasterImage class | |
try (RasterImage rasterImage = (RasterImage) Image.load(sourceFile)) { | |
if (!rasterImage.isCached()) { | |
rasterImage.cacheData(); | |
} | |
// Create an instance of Rectangle class with desired size, | |
//Perform the crop operation on object of Rectangle class and Save the results to disk | |
Rectangle rectangle = new Rectangle(20, 20, 20, 20); | |
rasterImage.crop(rectangle); | |
rasterImage.save(destName, new JpegOptions()); | |
} |
چرخش و وانمود تصویر
Aspose.PSD برای جاوا یک کتابخانهٔ آسان برای استفاده است، زیرا از روشهای ساده برای انجام عملیات پیچیده ارائه میدهد. به عنوان مثال، Aspose.PSD برای جاوا متد RotateFlip را برای کلاس پایه Image ارائه داده است اگر برنامه نیاز به چرخش تصویر داشته باشد. بدون توجه به فرمت تصویر، کتابخانه میتواند فرآیند خاصی از چرخش و وانمود را بر روی آن انجام دهد.
چرخش تصویر
متد Image.RotateFlip برای چرخش تصویر به ۹۰/۱۸۰/۲۷۰ درجه و وانمود تصویر به صورت افقی یا عمودی استفاده میشود. این متد پارامتری از نوع RotateFlipType را قبول میکند که نوع چرخش و وانمود مورد اعمال به تصویر را مشخص میکند. مراحل انجام چرخش و وانمود به راحتی به شرح زیر است،
- تصویر را با استفاده از متد فابریک Load ارائه شده توسط کلاس Image بارگیری کنید.
- متد Image.RotateFlip را صدا بزنید و در عین حال نوع RotateFlip مناسب را مشخص کنید.
- نتایج را ذخیره کنید.
مثال کد زیر نشان میدهد چگونه ویژگی RotateFlip یک تصویر و انواع روال را تنظیم کنیم.
String dataDir = Utils.getDataDir(RotatinganImage.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "RotatingAnImage_out.jpg"; | |
// Load an existing image into an instance of RasterImage class | |
try (Image image = Image.load(sourceFile)) { | |
image.rotateFlip(RotateFlipType.Rotate270FlipNone); | |
image.save(destName, new JpegOptions()); | |
} |
چرخش تصویر بر روی زاویه خاص
رابط برنامهٔ کاربردی Aspose.PSD برای جاوا متد RasterImage.Rotate را ارائه کرده است تا به کاربران خود که میخواهند تصویر را بر روی یک زاویه خاص چرخاند، کمک کند. بهخلاف متد RasterImage.RotateFlip، متد RasterImage.Rotate سه پارامتر را قبول میکند:
- زاویه چرخش: یک پارامتر از نوع float که زاویه چرخش را که تصویر باید به آن چرخیده شود مشخص میکند. یک مقدار مثبت تصویر را به صورت ساعتگرد چرخانده و یک مقدار منفی چرخش نیز به صورت مخالف ساعتگرد انجام میدهد.
- تغییر اندازه به صورت نسبی: یک پارامتر از نوع Boolean که مشخص میکند آیا ابعاد تصویر باید مطابق با پراکندگی چهارچوب چرخش (نقاط گوشهای) تغییر کند یا خیر. اگر به پالایشی ارسال شود، ابعاد تصویر تغییر نمیکنند و تنها محتویات تصویر داخلی چرخیده میشود.
- رنگ پسزمینه: یک پارامتر از نوع Color که رنگی را که در پسزمینه تصویر چرخیده پر کند، مشخص میکند.
قطعه کد زیر نشان میدهد نحوه استفاده از متد RasterImage.Rotate.
String dataDir = Utils.getDataDir(RotatinganImageonaSpecificAngle.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "RotatingImageOnSpecificAngle_out.jpg"; | |
try (RasterImage image = (RasterImage) Image.load(sourceFile)) { | |
// Before rotation, the image should be cached for better performance | |
if (!image.isCached()) { | |
image.cacheData(); | |
} | |
// Perform the rotation on 20 degree while keeping the image size proportional with red background color and Save the result to a new file | |
image.rotate(20f, true, Color.getRed()); | |
image.save(destName, new JpegOptions()); | |
} |
تغییر اندازه تصاویر
این مقاله نحوه استفاده از Aspose.PSD برای جاوا برای انجام عملیات Resize بر روی یک تصویر را نشان میدهد. رابط برنامهٔ کاربردی Aspose.PSD روشهای کارایی و آسان برای دستیابی به این هدف را ارائه کرده است. Aspose.PSD برای جاوا متد Resize را برای کلاس Image ارائه داده است که میتواند برای تغییر اندازه تصاویر موجود به صورت دینامیک استفاده شود. دو نسخه از متد Resize وجود دارد تا نیازهای برنامه را برآورده سازد.
تغییر اندازه ساده
مراحل انجام تغییر اندازه به راحتی به شرح زیر است:
- تصویر را با استفاده از متد فابریک Load ارائه شده توسط کلاس Image بارگیری کنید.
- متد Image.Resize را صدا بزنید و در عین حال ارتفاع و عرض جدید را مشخص کنید.
- نتایج را ذخیره کنید.
مثال کد زیر نشان میدهد چگونه یک تصویر را تغییر اندازه دهیم.
String dataDir = Utils.getDataDir(SimpleResizing.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "SimpleResizing_out.jpg"; | |
// Load an existing image into an instance of RasterImage class | |
try (Image image = Image.load(sourceFile)) { | |
image.resize(300, 300); | |
image.save(destName, new JpegOptions()); | |
} |
تغییر اندازه با ENUM ResizeType
رابط برنامهٔ کاربردی Aspose.PSD ENUM ResizeType را ارائه کرده است که میتواند با Image.Resize برای دستیابی به نتایج مطلوب استفاده شود. قطعه کد ارائه شده زیر نشان میدهد چگونه از ENUM ResizeType استفاده کنیم، در حالی که جزئیات اعضای ENUM ResizeType را میتوانید در پایین این صفحه بیابید.
String dataDir = Utils.getDataDir(ResizingwithResizeTypeEnumeration.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "ResizingwithResizeTypeEnumeration_out.jpg"; | |
// Load an existing image into an instance of RasterImage class | |
try (Image image = Image.load(sourceFile)) { | |
image.resize(300, 300, ResizeType.LanczosResample); | |
image.save(destName, new JpegOptions()); | |
} |
اگر قصد دارید پس از اعمال تغییر اندازه نتیجه با کیفیت داشته باشید پیشنهاد میشود همیشه از ResizeType.LanczosResample استفاده شود زیرا نتایج بسیار با کیفیتی را تولید خواهد کرد اما ممکن است که کارآمدی آن در مقایسه با ResizeType.NearestNeighbourResample کمتر باشد. از طرف دیگر، الگوریتم ResizeType.NearestNeighbourResample بهطور خاص برای تغییر اندازه سریع استفاده میشود در حالی که با کیفیت تصویر ممکن است متفاوت باشد. این متد میتواند برای تولید تصاویر کوچک بهصورت زمان واقعی یا پردازشهای مشابه که نیازمند عملکرد هستند، مفید باشد.
تغییر اندازه تصویر به صورت نسبتی
شما میتوانید اندازه تصاویر را با ارسال ارتفاع و عرض جدید به عنوان پارامترهای متد Image.Resize تغییر دهید اما در این صورت باید نسبت ابعاد را خودتان محاسبه کنید. این به این معنی است که هنگامی که عرض یا ارتفاع تصویر تغییر میکند، تصویر به منظور پرکردن اندازه جدید یا متناسب کردن به اندازه جدید، مقیاس داده یا کوچک میشود. اگر تغییرات عرض و ارتفاع تصویر به صورت نسبی نباشند، ممکن است منجر به نتیجه کشیده و انحراف اندازههای تصویر شود. این مقاله نحوه استفاده از رابط برنامهٔ کاربردی Aspose.PSD برای جاوا برای تغییر اندازه تصاویر با ارسال ارتفاع یا عرض جدید به متد Image.Resize را نشان میدهد.
String dataDir = Utils.getDataDir(ResizeImageProportionally.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "SimpleResizeImageProportionally_out.png"; | |
try (Image image = Image.load(sourceFile)) { | |
if (!image.isCached()) { | |
image.cacheData(); | |
} | |
// Specifying width and height | |
int newWidth = image.getWidth() / 2; | |
image.resizeWidthProportionally(newWidth); | |
int newHeight = image.getHeight() / 2; | |
image.resizeHeightProportionally(newHeight); | |
image.save(destName, new PngOptions()); | |
} |
ENUM ResizeType
ResizeType نوع تغییر اندازه را بر اساس فیلتر انتخاب شده بر روی تصویر مشخص میکند.
اعضای ENUM ResizeType
نام اعضا | مقدار | توضیحات |
---|---|---|
LeftTopToLeftTop | 0 | نقطه بالا و چپ تصویر جدید با نقطه بالا و چپ تصویر اصلی همسازی میکند. در صورت لزوم، برش صورت خواهد گرفت. |
RightTopToRightTop | 1 | نقطه بالا و راست تصویر جدید با نقطه بالا و راست تصویر اصلی همسازی میکند. در صورت لزوم، برش صورت خواهد گرفت. |
RightBottomToRightBottom | 2 | نقطه پایین و راست تصویر جدید با نقطه پایین و راست تصویر اصلی همسازی میکند. در صورت لزوم، برش صورت خواهد گرفت. |
LeftBottomToLeftBottom | 3 | نق |