Heim  >  Artikel  >  Backend-Entwicklung  >  So optimieren Sie die Bildskalierung und das Zuschneiden mit PHP und REDIS

So optimieren Sie die Bildskalierung und das Zuschneiden mit PHP und REDIS

PHPz
PHPzOriginal
2023-07-21 16:10:49623Durchsuche

So optimieren Sie die Skalierung und den Zuschnitt von Bildern mit PHP und REDIS

Im modernen Webdesign spielen Bilder auf der Seite eine sehr wichtige Rolle. Um jedoch qualitativ hochwertige Bilder auf Webseiten anzuzeigen, müssen Bilder häufig skaliert und zugeschnitten werden. In diesem Artikel wird die Verwendung von PHP und REDIS zur Optimierung des Bildskalierungs- und Zuschneidevorgangs vorgestellt und relevante Codebeispiele bereitgestellt.

Warum sollten wir die Bildskalierung und das Zuschneiden optimieren?

Auf verschiedenen Websites wie Blogs und E-Commerce-Websites ist die Anzeige von Bildern eine sehr häufige und notwendige Funktion. Um sich jedoch an unterschiedliche Geräte und Seitenlayouts anzupassen, müssen Bilder häufig skaliert und zugeschnitten werden. Wenn das Bild bei jeder Anfrage verarbeitet wird, wird die Reaktionsfähigkeit der Webseite und das Benutzererlebnis erheblich beeinträchtigt. Daher besteht eine wirksame Optimierungsmethode darin, die verarbeiteten Bilder zwischenzuspeichern, um eine wiederholte Verarbeitung zu vermeiden.

Bildoptimierung mit PHP und REDIS

PHP ist eine beliebte serverseitige Skriptsprache, die zur Abwicklung von Bildoperationen verwendet werden kann. REDIS ist eine leistungsstarke In-Memory-Datenbank, die als Cache-Speicher verwendet werden kann. Durch die Kombination von PHP und REDIS können wir die verarbeiteten Bilder in REDIS speichern, sodass sie bei der nächsten Anfrage direkt abgerufen werden können, wodurch die Bildladegeschwindigkeit verbessert wird. Hier sind die Schritte zur Bildoptimierung mit PHP und REDIS:

  1. REDIS konfigurieren

Zuerst müssen wir REDIS auf dem Server installieren und konfigurieren. REDIS kann über die offizielle REDIS-Website heruntergeladen und installiert werden. Nach Abschluss der Installation können Sie den REDIS-Server starten und bei Bedarf relevante Parameter wie Portnummer und Passwort konfigurieren.

  1. Bildskalierungs- und Zuschneideverarbeitung

Mit der GD-Bibliothek von PHP können Bildskalierungs- und Zuschneidevorgänge problemlos durchgeführt werden. Hier ist ein einfaches Beispiel, um ein Bild mithilfe der GD-Bibliothek auf eine bestimmte Größe zu skalieren:

<?php
// 原始图像文件路径
$originalImagePath = 'path/to/original_image.jpg';

// 缩放后的图像尺寸
$width = 300;
$height = 200;

// 创建一个空的画布
$canvas = imagecreatetruecolor($width, $height);

// 加载原始图像
$originalImage = imagecreatefromjpeg($originalImagePath);

// 将原始图像缩放到指定尺寸
imagecopyresampled($canvas, $originalImage, 0, 0, 0, 0, $width, $height, imagesx($originalImage), imagesy($originalImage));

// 输出缩放后的图像
header('Content-Type: image/jpeg');
imagejpeg($canvas);

// 释放内存
imagedestroy($canvas);
imagedestroy($originalImage);
?>
  1. Cache das verarbeitete Bild mit REDIS

Bevor wir das Bild an den Client ausgeben, speichern wir das verarbeitete Bild in REDIS, damit es gespeichert werden kann erhalten Sie direkt bei Ihrer nächsten Anfrage. Das Folgende ist ein Beispielcode für das Caching mit REDIS:

<?php
// 原始图像文件路径
$originalImagePath = 'path/to/original_image.jpg';

// 缩放后的图像尺寸
$width = 300;
$height = 200;

// 生成缓存键值
$cacheKey = 'image_' . md5($originalImagePath . '_' . $width . '_' . $height);

// 尝试从REDIS中获取缓存的图像
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$cachedImage = $redis->get($cacheKey);

// 如果REDIS中不存在缓存的图像,则进行图像处理并存储到REDIS中
if (!$cachedImage) {
    $canvas = imagecreatetruecolor($width, $height);
    $originalImage = imagecreatefromjpeg($originalImagePath);
    imagecopyresampled($canvas, $originalImage, 0, 0, 0, 0, $width, $height, imagesx($originalImage), imagesy($originalImage));
    
    ob_start();
    imagejpeg($canvas);
    $cachedImage = ob_get_contents();
    ob_end_clean();
    
    $redis->set($cacheKey, $cachedImage);
    
    imagedestroy($canvas);
    imagedestroy($originalImage);
}

// 输出图像给客户端
header('Content-Type: image/jpeg');
echo $cachedImage;
?>

Im obigen Beispiel verwenden wir den Pfad, die Breite und die Höhe des Bildes als Schlüsselwert des Caches und speichern die verarbeiteten Bilddaten in REDIS. Wenn derselbe Schlüsselwert bereits in REDIS vorhanden ist, werden die zwischengespeicherten Bilddaten direkt von REDIS abgerufen. Andernfalls wird eine Bildverarbeitung durchgeführt und die verarbeiteten Bilddaten werden in REDIS gespeichert.

Zusammenfassung

Die Verwendung von PHP und REDIS kann den Prozess der Skalierung und des Zuschneidens von Webseitenbildern optimieren und dadurch die Reaktionsgeschwindigkeit und das Benutzererlebnis der Webseite verbessern. Durch die Speicherung verarbeiteter Bilder in REDIS werden wiederholte Bildverarbeitungsprozesse vermieden und dadurch die Reaktionszeit deutlich verkürzt. Das Obige ist ein einfaches Beispiel. Sie können den Code entsprechend Ihren Anforderungen erweitern und optimieren. Ich hoffe, dieser Artikel hilft Ihnen!

Das obige ist der detaillierte Inhalt vonSo optimieren Sie die Bildskalierung und das Zuschneiden mit PHP und REDIS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn