Saya menggunakan Magento 2 CE Versi 2.1.0
Saya memiliki Modul Kustom dengan Bidang Gambar. Ketika diunggah, saya ingin gambar dengan ukuran yang berbeda untuk produk kami memiliki Gambar Thumbnail, Gambar Daftar & Gambar Halaman Detail Produk.
Dapat mengunggah 1 gambar tanpa mengubah ukuran.
Saya menggunakan kode di bawah ini untuk mengubah ukuran gambar, tetapi memberikan URL gambar produk. Bukan modul khusus saya.
\ app \ code \ Custom \ Module \ Block \ MyPosts \ Edit.php
public function getImage($posts, $image) {
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$_imagehelper = $objectManager->get('Magento\Catalog\Helper\Image');
echo $postImage = $_imagehelper->init($posts, $image)->constrainOnly(FALSE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize(400)->getUrl();
exit;
}
Ini memberikan URL di bawah ini http: //localhost/magento2/pub/static/frontend/Magento/luma/en_US/Magento_Catalog/images/product/placeholder/.jpg
Gambar saya disimpan di sini: \magento2\pub\media\custom_module\posts\image
.
Bagaimana saya bisa mendapatkan ukuran gambar dengan jalur ini & bagaimana saya bisa menyimpan / mengambil gambar ukuran yang berbeda?
sumber
Jawaban yang diterima tidak mempertimbangkan caching gambar untuk meningkatkan kinerja. Anda tidak perlu mengubah ukuran dan menimpa gambar setiap kali diminta. Pendekatan berikut menyimpan gambar yang diubah ukurannya ke folder "cache" sehingga panggilan berturut-turut mengembalikan gambar dari cache. Metode ini terkandung pada helper (bukan blok) sehingga Anda dapat memanggilnya dari template yang Anda suka:
app / code / Vendor / Namespace / Helper / Image.php
Sekarang dari sembarang .phtml Anda dapat memanggil metode seperti ini:
sumber
if (!$this->_fileExists($path . $image)) {
menjadiif (!$this->_fileExists($path . $image) && $this->_fileExists($mediaFolder . $image)) {
\Magento\Catalog\Helper\Image
.Saya khawatir Anda tidak perlu membuat kelas baru untuk mengubah ukuran gambar Anda, karena pembantu Magento sudah memilikinya (lihat
\Magento\Catalog\Helper\Image::resize
).Jadi, Anda bisa melakukan:
Anda juga dapat melihat contoh penggunaan ini di
\Magento\VisualMerchandiser\Block\Adminhtml\Category\Merchandiser\Tile::getImageUrl
(hanya Magento EE, saya kira)sumber
$product
tapi hanya path ke file gambar di / media.Saya mengalami masalah di mana
resize
metode ini tidak akan memotong gambar ke dimensi saya sehingga Anda harus menghitung nilai pemotongan dari atas dan bawah atau kiri dan kanan, tergantung pada ukuran gambar asli Anda. Saya menggunakan kode dari @Rakesh dan memodifikasinya sehingga memeriksa apakah gambar asli lebih tinggi atau lebih luas dan memotong sesuai:sumber
@Rakesh - Saya telah melakukan hal yang sama tetapi tidak berfungsi untuk saya ada kesalahan
dapatkah Anda membantu saya dalam hal ini?
Terima kasih.
sumber