Phalcon 3

Images




phalcon

Phalcon\Image هو المكون الذي يسمح لك بالتعامل مع ملفات الصور. يمكن إجراء عمليات متعددة على نفس كائن الصورة.

ليس المقصود من هذا الدليل أن يكون توثيقاً كاملاً للطرق المتاحة وحججها. يرجى زيارة API للحصول على مرجع كامل.

محولات

يستخدم هذا المكون المحولات لتغليف برامج معالجة الصور المحددة. برامج معالجة الصور التالية مدعومة:

صف دراسي وصف
Phalcon\Image\Adapter\Gd يتطلب تمديد GD PHP .
Phalcon\Image\Adapter\Imagick يتطلب تمديد ImageMagick PHP .

تنفيذ المحولات الخاصة بك

يجب تنفيذ واجهة Phalcon\Image\AdapterInterface من أجل إنشاء محولات الصور الخاصة بك أو توسيع الموجودة منها.

حفظ وتقديم الصور

قبل أن نبدأ بالميزات المختلفة لمكون الصورة ، من المفيد فهم كيفية حفظ هذه الصور وعرضها.

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

// ...

// Overwrite the original image
$image->save();
$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

// ...

// Save to 'new-image.jpg'
$image->save("new-image.jpg");

يمكنك أيضًا تغيير تنسيق الصورة:

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

// ...

// Save as a PNG file
$image->save("image.png");

عند الحفظ بتنسيق JPEG ، يمكنك أيضًا تحديد الجودة كمعلمة ثانية:

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

// ...

// Save as a JPEG with 80% quality
$image->save("image.jpg", 80);

تغيير حجم الصور

هناك عدة طرق لتغيير الحجم:

  • \Phalcon\Image::WIDTH
  • \Phalcon\Image::HEIGHT
  • \Phalcon\Image::NONE
  • \Phalcon\Image::TENSILE
  • \Phalcon\Image::AUTO
  • \Phalcon\Image::INVERSE
  • \Phalcon\Image::PRECISE

\Phalcon\Image::WIDTH

سيتم إنشاء الارتفاع تلقائيًا للحفاظ على النسب نفسها ؛ إذا حددت ارتفاعًا ، فسيتم تجاهله.

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->resize(
    300,
    null,
    \Phalcon\Image::WIDTH
);

$image->save("resized-image.jpg");

\Phalcon\Image::HEIGHT

سيتم إنشاء العرض تلقائيًا للحفاظ على النسب نفسها ؛ إذا قمت بتحديد عرض ، فسيتم تجاهله.

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->resize(
    null,
    300,
    \Phalcon\Image::HEIGHT
);

$image->save("resized-image.jpg");

\Phalcon\Image::NONE

يتجاهل ثابت NONE نسبة الصورة الأصلية. لا يلزم العرض والارتفاع. إذا لم يتم تحديد بُعد ، فسيتم استخدام البُعد الأصلي. إذا اختلفت النسب الجديدة عن النسب الأصلية ، فقد تكون الصورة مشوهة وممتدة.

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->resize(
    400,
    200,
    \Phalcon\Image::NONE
);

$image->save("resized-image.jpg");

\Phalcon\Image::TENSILE

على غرار ثابت NONE ، يتجاهل ثابت TENSILE نسبة الصورة الأصلية. كل من العرض والارتفاع مطلوبة. إذا اختلفت النسب الجديدة عن النسب الأصلية ، فقد تكون الصورة مشوهة وممتدة.

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->resize(
    400,
    200,
    \Phalcon\Image::NONE
);

$image->save("resized-image.jpg");

اقتصاص الصور

على سبيل المثال ، للحصول على مربع بحجم 100 بكسل × 100 بكسل من مركز الصورة:

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$width   = 100;
$height  = 100;
$offsetX = (($image->getWidth() - $width) / 2);
$offsetY = (($image->getHeight() - $height) / 2);

$image->crop($width, $height, $offsetX, $offsetY);

$image->save("cropped-image.jpg");

تدوير الصور

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

// Rotate an image by 90 degrees clockwise
$image->rotate(90);

$image->save("rotated-image.jpg");

التقليب الصور

يمكنك قلب صورة أفقية (باستخدام ثابت \Phalcon\Image::HORIZONTAL ) وعموديًا (باستخدام ثابت \Phalcon\Image::VERTICAL ):

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

// Flip an image horizontally
$image->flip(
    \Phalcon\Image::HORIZONTAL
);

$image->save("flipped-image.jpg");

شحذ الصور

تأخذ sharpen() معلمة مفردة - عدد صحيح بين 0 (بدون تأثير) و 100 (حاد جدًا):

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->sharpen(50);

$image->save("sharpened-image.jpg");

مضيفا علامات مائية على الصور

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$watermark = new \Phalcon\Image\Adapter\Gd("me.jpg");

// Put the watermark in the top left corner
$offsetX = 10;
$offsetY = 10;

$opacity = 70;

$image->watermark(
    $watermark,
    $offsetX,
    $offsetY,
    $opacity
);

$image->save("watermarked-image.jpg");

بالطبع ، يمكنك أيضًا التحكم في الصورة التي تم وضع علامة مائية عليها قبل تطبيقه على الصورة الرئيسية:

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$watermark = new \Phalcon\Image\Adapter\Gd("me.jpg");

$watermark->resize(100, 100);
$watermark->rotate(90);
$watermark->sharpen(5);

// Put the watermark in the bottom right corner with a 10px margin
$offsetX = ($image->getWidth() - $watermark->getWidth() - 10);
$offsetY = ($image->getHeight() - $watermark->getHeight() - 10);

$opacity = 70;

$image->watermark(
    $watermark,
    $offsetX,
    $offsetY,
    $opacity
);

$image->save("watermarked-image.jpg");

عدم وضوح الصور

تأخذ طريقة blur() معلمة مفردة - عدد صحيح بين 0 (بدون تأثير) و 100 (ضبابية للغاية):

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->blur(50);

$image->save("blurred-image.jpg");

صور Pixelating

تأخذ طريقة pixelate() معلمة مفردة - كلما زاد العدد الصحيح ، كلما أصبحت الصورة أكثر وضوحًا:

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->pixelate(10);

$image->save("pixelated-image.jpg");