Để lấy URI phái sinh hình ảnh cho một hình ảnh được áp dụng một kiểu hình ảnh cụ thể, bạn có thể sử dụng đoạn mã sau.
// Tải đối tượng ImageStyle trong $image_style, ví dụ với
// $image_style = ImageStyle::load($id).
// $image_uri là đường dẫn/URI của hình ảnh mà kiểu được áp dụng.
if ($image_style->supportsUri($image_uri)) {
$derivative_uri = $style->buildUri($image_uri);
}
Hãy nhớ rằng các dẫn xuất hình ảnh chỉ được tạo khi URL được trả về từ $image_style->buildURL($image_uri)
được yêu cầu (từ một trình duyệt). Xây dựng URI (hoặc URL) không tạo ra hình ảnh phái sinh; nó trả về URI (URL) cho một hình ảnh chưa tồn tại.
Để kiểm tra một dẫn xuất hình ảnh có thể được tạo ra, mã tương tự như mã được sử dụng từ ImageStyleDownloadController::deliver()
nên được sử dụng.
if ($image_style->supportsUri($image_uri)) {
$derivative_uri = $style->buildUri($image_uri);
if (!file_exists($image_uri)) {
$path_info = pathinfo($image_uri);
$converted_image_uri = $path_info['dirname'] . DIRECTORY_SEPARATOR . $path_info['filename'];
nếu (file_exists($converted_image_uri)) {
$image_uri = $converted_image_uri;
}
}
$success = file_exists($derivative_uri) || $image_style->createDerivative($image_uri, $derivative_uri);
nếu ($ thành công) {
$image = Drupal::service('image.factory')->get($derivative_uri);
$uri = $image->getSource();
}
}