نسخة الكود كما يلي:
/**
*
*/
حزمة com.b510 ؛
استيراد java.awt.Rectangle ؛
استيراد java.awt.image.bufferedImage ؛
استيراد java.io.file ؛
استيراد java.io.fileInputStream ؛
استيراد java.io.ioException ؛
استيراد java.util.date ؛
استيراد java.util.iterator ؛
استيراد javax.imageio.imageio ؛
استيراد javax.imageio.imagereadparam ؛
استيراد javax.imageio.imagereader ؛
استيراد javax.imageio.stream.imageInputStream ؛
/**
* date 2012-11-26
* Author XHW
*
*/
الطبقة العامة ImageCut {
/**
* اسم مسار الصورة المصدر هو: C: /1.JPG
*/
سلسلة خاصة srcpath = "e: /poool.jpg" ؛
/**
* اسم مسار تخزين الصورة
*/
سلسلة خاصة subpath = "e:/pool_end" ؛
/**
* تنسيق صورة JPG
*/
Static Final String Image_form_of_jpg = "JPG" ؛
/**
* تنسيق صورة PNG
*/
Static Final String Image_form_of_png = "PNG" ؛
/**
* X إحداثيات من نقطة القص
*/
Private Int X ؛
/**
* CUT POINT y إحداثيات
*/
الخاص int y ؛
/**
* عرض نقطة القص
*/
عرض int الخاص
/**
* ارتفاع نقطة القص
*/
ارتفاع int الخاص
ImageCut () {
}
ImageCut العام (int x ، int y ، int ، ارتفاع int) {
this.x = x ؛
this.y = y ؛
this.width = العرض ؛
this.height = الارتفاع ؛
}
الفراغ الثابت العام (سلسلة [] args) يلقي الاستثناء {
ImageCut ImageCut = New ImageCut (134 ، 0 ، 366 ، 366) ؛
ImageCut.cut (ImageCut.getSrcPath () ، ImageCut.getSubPath ()) ؛
}
/**
* إرجاع ايتراتور يحتوي على جميع المتقاعدين المسجلين حاليًا والذين يدعيون أنهم قادرون على فك تشفير التنسيق المحدد.
* المعلمات: Formatname - يحتوي على اسم تنسيق غير رسمي.
*
* param postfix
* اسم لاحقة الملف
* @يعود
*/
Iterator العام <ImageReader> getImageReadersByFormatname (سلسلة postfix) {
التبديل (postfix) {
case image_form_of_jpg:
return imageio.getImageReadersByformatName (image_form_of_jpg) ؛
case image_form_of_png:
إرجاع Imageio.getImageReadersByformatName (image_form_of_png) ؛
تقصير:
return imageio.getImageReadersByformatName (image_form_of_jpg) ؛
}
}
/**
* اقتصاص الصورة وحفظ الصورة الجديدة بعد زراعة المحاصيل.
* param srcpath path path path
* param subpath مسار تخزين الصورة
* throws ioException
*/
Cut Public Void Cut (String SRCPath ، String Subpath) يلقي IoException {
FileInputStream هو = فارغ ؛
ImageInputStream iis = null ؛
يحاول {
// قراءة ملفات الصور
هو = جديد fileInputStream (SRCPath) ؛
// احصل على اسم لاحقة الملف
سلسلة postfix = getPostFix (SRCPath) ؛
System.out.println ("تنسيق الصورة هو:" + postfix) ؛
/*
* إرجاع ايتراتور يحتوي على جميع المتقاعدين المسجلين حاليًا والذين يدعيون أنهم قادرون على فك تشفير التنسيق المحدد.
* المعلمات: Formatname - يحتوي على اسم تنسيق غير رسمي.
*/
iterator <ImageReader> it = getImagerEadersByformatName (postfix) ؛
imagereader reader = it.next () ؛
// احصل على دفق الصورة
iis = imageio.createImageInputStream (IS) ؛
/*
* <p> IIS: قراءة Source.true: البحث إلى الأمام فقط </p>.
* يعني هذا الإعداد أن الصور المضمنة في مصدر الإدخال ستتم قراءة فقط بالترتيب ، مما قد يسمح للقارئ بتجنب تخزين أجزاء الإدخال هذه التي تحتوي على صور قراءة مسبقًا.
*/
reader.setInput (iis ، true) ؛
/*
* <p> الفئة التي تصف كيفية فك تشفير التدفقات <p>.
* تدفقات في سياق الإطار ، قم بتحويل صورة أو مجموعة من الصور. سيتم تنفيذ المكون الإضافي لتنسيق صورة معين من مصوره
* تقوم طريقة getDefaultReadParam بإرجاع مثيل ImageReadParam.
*/
imagereadparam param = reader.getDefaultReadParam () ؛
/*
* منطقة محصول الصورة. يحدد المستطيل منطقة في مساحة الإحداثيات ، من خلال كائن المستطيل
يمكن للإحداثيات (x ، y) ، عرض وارتفاع الرأس الأيسر العلوي من * تحديد هذه المنطقة.
*/
المستطيل المستقيم = مستطيل جديد (x ، y ، العرض ، الارتفاع) ؛
// توفير bufferedimage لاستخدامه كهدف لفك تشفير بيانات البكسل.
param.setsourceregion (Rect) ؛
/*
* استخدم imagereadparam المقدمة لقراءة الكائن المحدد عن طريق فهرسة ImageIndex واستخدامه ككامل
* عودة bufferedimage.
*/
BufferedImage BI = reader.read (0 ، param) ؛
// حفظ صورة جديدة
imageio.write (bi ، postfix ، ملف جديد (subpath + "_" + new date (). getTime () + "." + postfix)) ؛
} أخيراً {
إذا (هو! = فارغ)
is.close () ؛
إذا (IIS! = فارغ)
iis.close () ؛
}
}
/**
* احصل على اسم لاحقة inputFilePath ، مثل: "e: /test.pptx" مع اسم لاحقة: "pptx" <br>
*
* param inputFilePath
* @يعود
*/
السلسلة العامة getPostFix (سلسلة inputFilePath) {
إرجاع inputFilePath.subString (inputFilePath.lastindexof (".") + 1) ؛
}
العام int getheight () {
عودة ارتفاع
}
public void setheight (int height) {
this.height = الارتفاع ؛
}
السلسلة العامة getSrcPath () {
إرجاع srcpath ؛
}
public void setsrcpath (سلسلة srcpath) {
this.srcpath = srcpath ؛
}
السلسلة العامة getBpath () {
إرجاع Subpath ؛
}
setsubpath public void (String subpath) {
this.subpath = subpath ؛
}
الجمهور int getWidth () {
عرض العودة
}
setWidth public void (عرض int) {
this.width = العرض ؛
}
العام int getx () {
إرجاع x ؛
}
public void setx (int x) {
this.x = x ؛
}
الجمهور int gety () {
إرجاع y ؛
}
public void sety (int y) {
this.y = y ؛
}
}