2016-08-19 15 views
0

1920x1080のサイズを持つ大きな画像がありますが、現在のキャンバスのサイズは800x600です。画像のスケーリング背景ピクセルのサイズ/画像の品質を低下させる。輸出するときでさえ、画質はまだ低いです。どうすればそれが起こるのを防ぐのですか?fabric.jsバックグラウンドとして使用し、キャンバスのサイズにリサイズしたときの画質を維持する方法

var background = 'image.jpg'; 
    canvas.setBackgroundImage(background, canvas.renderAll.bind(canvas), { 
        width: canvas.width, 
        height: canvas.height, 
        originX: 'left', 
        originY: 'top' 
       }); 

答えて

4

私はファブリックがこれを改善する方法を持っているかどうかはわかりません。大きなスケーリングを行うと、こうした種類の品質低下を引き起こす可能性があります。私たちのアプリでは、高品質で画像のサイズを変更するためのpicaというライブラリを使用しています。 pica demo here

あなたがイメージ画像を縮小するために、このライブラリを使用することができ

pica repo here

キャンバスに追加する前に、またはキャンバスサイズを変更し、多分とき。

+0

こんにちは!私のプロジェクトはpdfにイメージを変換するPHPバックエンドに統合されます。これをphpと統合することは可能ですか?それとも、toDataURL()キャンバス関数を使ってサイズ変更した画像をPHPに書き出すことが可能ですか? –

+1

あなたはブラウザに達する前にphpとimagemagickを使ってイメージのサイズを変更することができます。あるいは、ファブリック(レンダリング)をフルサイズまで拡大してイメージをフルサイズで書き出してからバックエンドでイメージのサイズを変更できます。あらかじめ画像のサイズを変更するのが最善の選択肢になりそうです。 – StefanHayden

2

また、fabricjsサイズ変更フィルタの1つを使用して、縮小されたイメージのより良いバージョンを取得することもできます。 彼らはとにかくパイカンとしては良くありません。

PICAとfabricjs resizeの間の接続を簡単に実装することができます。Picaは要素を入力に取り入れて、ファブリックのフィルターの機能を多かれ少なかなく出力するキャンバスを提供します。

+0

こんにちは!私はLanczos 3を使用してファブリックの画像のサイズ変更を試みましたが、さらにサイズを変更するとまだ画像の品質が低下しています。また、ブラウザがクラッシュすることもあります。 –

関連する問題