2017-12-25 9 views
0

私はLaravel(5.5)をBackpackで使用しています。バックパックにはCropper jQuery pluginが含まれており、アップロードする前に画像を切り抜くことができます。Laravel Backpack Cropperで画像をアップロードするときに元の画像と切り取った画像を保存します

画像の切り抜きと完全版をサーバーに保存する必要があります。クロップされたバージョンはサムネイルであり、完全なバージョンは拡大ビューです。

デフォルトでは、バックパックの実装では、画像の切り取ったバージョンのみが保存されます。フルサイズを保存する私の計画は、バックパックビューを変更して、フルサイズのイメージ(隠しフィールドの値をonsubmit?)からなる余分な隠しフィールドを含むようにすることです。

私はCropperのドキュメントを読んだことがありますが、フルサイズ(クロップ前)で画像データを返す方法と、このデータがフォーム提出に含まれているとは思われません。

私は2つの質問があります。その場合

  1. すでに( に加えて、トリミングされたバージョン)をサーバーに送信される完全なイメージですがと、 がそれを保持しているフィールドの名前は何ですか?
  2. 上記が間違っている場合は、 を別のフィールドのサーバーに送信できる画像データを返してくれるクロッタ クラスのメソッドがありますか?

2番目の質問は少し漠然としています。私はこの画像のアップロードがどのように動作するか分からないからです(アップロードする前にbase64に変換されているようですが、それは驚くべきことです)。

ありがとうございます。

答えて

1

私が終わってきたソリューションは、次の要素で構成されます

クライアント側で
  1. 、私はresources/view/vendor/backpack/crud/fields/image.blade.phpfullImageDataと呼ばれる隠しフィールドを追加しました。次に、同じファイル(行189辺り)のクロップされたバージョンの値を設定する行に続いて、submitメソッドの無名関数としてJavaScriptの次の行を追加しました:

    $ mainImage.cropper( 'clear') ; $ mainImage.cropper( 'setData'、$ mainImage.cropper( 'getImageData')) var fullImageURL = $ mainImage.cropper( 'getCroppedCanvas')。toDataURL(file.type); $( '#fullImageData').val(fullImageURL);

    サーバーで
  2. 、モデルでは、fullImageDataと呼ばれる(任意の視認性)モデルのプロパティを追加し、setFullImageDataAttributeミューテータは、画像データを取り込む(およびファイルに保存)、そして最後に、fullImageDataフィールドを追加しますモデルの$ fillableプロパティ

これは、同じ状況で他の誰かに役立つことを願っています。

+0

解決策をお寄せいただきありがとうございます。 – tabacitu

関連する問題