Điểm:0

Có cách nào dễ dàng để lấy liên kết dẫn xuất hình ảnh không?

lá cờ by

Tôi đang làm việc với các kiểu hình ảnh phức tạp và tôi muốn có thể tải tất cả các dẫn xuất khác nhau một cách nhanh chóng để kiểm tra xem chúng có được xử lý chính xác hay không.

Nhưng tôi không thấy làm thế nào để dễ dàng có được các liên kết. Điều tốt nhất tôi có thể nghĩ ra là mở nút trong JSONAPI và với bản vá từ https://www.drupal.org/project/drupal/issues/2825812, lấy URL cho các công cụ phái sinh từ đó.

Nó có một cái gì đó dễ dàng hơn?

Quay trở lại Drupal 6 ngày, mô-đun Hình ảnh hiển thị các liên kết đến tất cả các kích thước trên chính nút hình ảnh.

Điểm:1
lá cờ us

Để 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();
  }
}
lá cờ by
Cảm ơn! Mặc dù vậy, ý tôi là liệu có cách nào để loại bỏ những thứ đó trong giao diện người dùng hay không. Ví dụ, người biên tập nội dung có thể muốn nhanh chóng xác minh các hình ảnh phái sinh.
apaderno avatar
lá cờ us
Tôi không biết bất kỳ mô-đun nào làm điều đó. Mô-đun tùy chỉnh sử dụng mã mà tôi đề xuất có thể hiển thị các URI trên một trang.
Điểm:1
lá cờ cn

Bạn có thể lấy thông tin đó bằng đoạn mã sau:

$ original_uri = 'public://images/image.jpg';

$styles = \Drupal::entityTypeManager()->getStorage('image_style')->loadMultiple();

$urls = array_map(function($style) sử dụng ($origin_uri) {
  trả lại $style->buildUri($ original_uri);
}, $style);

$url bây giờ sẽ chứa một danh sách các URL dựa trên bản gốc, một cho mỗi kiểu hình ảnh trong hệ thống.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.