Score:0

มีวิธีง่ายๆ ในการรับลิงก์อนุพันธ์ของรูปภาพหรือไม่

ธง by

ฉันกำลังทำงานกับสไตล์ภาพที่ซับซ้อน และฉันต้องการโหลดอนุพันธ์ต่างๆ ทั้งหมดอย่างรวดเร็วเพื่อตรวจสอบว่ากำลังประมวลผลอย่างถูกต้อง

แต่ฉันไม่เห็นวิธีรับลิงก์อย่างง่ายดาย สิ่งที่ดีที่สุดที่ฉันคิดได้คือการเปิดโหนดใน JSONAPI และด้วยแพตช์จาก https://www.drupal.org/project/drupal/issues/2825812รับ URL สำหรับอนุพันธ์จากสิ่งนั้น

มันมีอะไรง่ายกว่านี้ไหม?

ย้อนกลับไปใน Drupal 6 วัน โมดูลอิมเมจแสดงลิงก์ไปยังทุกขนาดบนโหนดอิมเมจ

Score:1
ธง us

ในการรับ URI อนุพันธ์ของรูปภาพสำหรับรูปภาพที่ใช้สไตล์รูปภาพเฉพาะ คุณสามารถใช้รหัสต่อไปนี้

// โหลด ImageStyle ตัวอย่างใน $image_style เช่นกับ
// $image_style = ImageStyle::load($id)
// $image_uri คือเส้นทาง/URI สำหรับรูปภาพที่ใช้สไตล์ 
ถ้า ($image_style->supportsUri($image_uri)) {
  $derivative_uri = $style->buildUri($image_uri);
}

โปรดทราบว่าอนุพันธ์ของรูปภาพจะถูกสร้างขึ้นเฉพาะเมื่อ URL ส่งคืนจาก $image_style->buildURL($image_uri) ถูกร้องขอ (จากเบราว์เซอร์) การสร้าง URI (หรือ URL) ไม่ได้สร้างภาพลอกเลียนแบบ จะส่งคืน URI (URL) สำหรับรูปภาพที่ยังไม่มีอยู่จริง

ในการตรวจสอบอนุพันธ์ของภาพสามารถสร้างได้ รหัสคล้ายกับที่ใช้จาก ImageStyleDownloadController::deliver() ควรใช้.

ถ้า ($image_style->supportsUri($image_uri)) {
  $derivative_uri = $style->buildUri($image_uri);

  ถ้า (!file_exists($image_uri)) {
    $path_info = pathinfo($image_uri);
    $converted_image_uri = $path_info['dirname'] DIRECTORY_SEPARATOR $path_info['ชื่อไฟล์'];
    ถ้า (file_exists($converted_image_uri)) {
      $image_uri = $converted_image_uri;
    }
  }

  $success = file_exists($derivative_uri) || $image_style->createDerivative($image_uri, $derivative_uri);

  ถ้า ($ สำเร็จ) {
    $image = Drupal::service('image.factory')->get($derivative_uri);
    $uri = $image->getSource();
  }
}
by flag
ขอบคุณ! สิ่งที่ฉันหมายถึงคือมีวิธีนำสิ่งเหล่านั้นออกมาใน UI หรือไม่ ตัวอย่างเช่น ผู้แก้ไขเนื้อหาอาจต้องการตรวจสอบภาพลอกเลียนแบบอย่างรวดเร็ว
apaderno avatar
us flag
ฉันไม่รู้ว่ามีโมดูลใดที่ทำอย่างนั้น โมดูลแบบกำหนดเองที่ใช้โค้ดที่ฉันแนะนำสามารถแสดง URI บนเพจได้
Score:1
ธง cn

คุณสามารถรับข้อมูลนั้นด้วยรหัสต่อไปนี้:

$original_uri = 'สาธารณะ://images/image.jpg';

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

$urls = array_map(ฟังก์ชั่น($style) ใช้ ($original_uri) {
  ส่งคืน $style->buildUri($original_uri);
}, $สไตล์);

$url ตอนนี้ควรมีรายการ URL ตามต้นฉบับ หนึ่งรายการสำหรับแต่ละสไตล์ภาพในระบบ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา