3

以下の手順を使用して、TWebbrowser から JPG ファイルを作成します。これにより、JPG の外観は問題ありません。次に、この JPG を DevExpress から TcxImage コントロールにロードして、印刷します。そして、それは私の画像を台無しにするので、地図を見ることができません(これはGoogleマップの地図の一部です)画像をロードするためのコードは

imgPrint.Picture.LoadFromFile(lImage);

なぜこれがすでに画面上でそれほど悪く見えるのか、私にはよくわかりません。マップを印刷できるようにするために、このようにします。TWebBrowser から直接行うこともできますが、出力サイズを制御できず、独自のヘッダーとフッターを追加するのは難しいです。

procedure TfrmJsZipExplorer.actSaveExecute(Sender: TObject);
var
  ViewObject : IViewObject;
  r : TRect;
  Bitmap: TBitmap;
begin
  if WebBrowser1.Document <> nil then
    begin
      WebBrowser1.Document.QueryInterface(IViewObject, ViewObject) ;
      if Assigned(ViewObject) then
        try
          Bitmap := TBitmap.Create;
          try
            r := Rect(0, 0, WebBrowser1.Width, WebBrowser1.Height) ;
            Bitmap.Height := WebBrowser1.Height;
            Bitmap.Width := WebBrowser1.Width;
            ViewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Application.Handle, bitmap.Canvas.Handle, @r, nil, nil, 0);
            with TJPEGImage.Create do
              try
                Assign(Bitmap);
                SaveToFile(lImagefile);
              finally
                Free;
            end;
          finally
            Bitmap.Free;
          end;
        finally
          ViewObject._Release;
        end;
    end;
end;
4

1 に答える 1

4

保存した JPEG 画像の品質を向上させる方法は?

保存した画像のプロパティを最低の圧縮率に設定することができCompressionQualityますが、最高の画質値を設定できます。これにより、出力画像の視覚的品質が向上します。このプロパティを 100 に設定すると、画質は向上しますが、ファイル サイズが大きくなります。

with TJPEGImage.Create do
try
  Assign(Bitmap);      
  CompressionQuality := 100;
  SaveToFile(lImagefile);
finally
  Free;
end;

この画像アーカイブには JPEG 形式を使用する必要がありますか?

画像アーカイブが JPEG 形式に限定されていない場合は、PNG などの別の形式を使用することを検討してください。TPNGImageクラスでPNG形式を使用することにした場合CompressionLevel、保存された画像の圧縮レベルを指定でき、出力ファイルのサイズに直接影響するプロパティがありますが、同じままのJPEG形式の圧縮とは異なります視覚的な品質。このプロパティを 9 に設定すると、完全圧縮が使用され、ファイル サイズが小さくなるだけで、品質は圧縮を使用しない場合 (値 0) と同じになります。

uses
  PNGImage;

with TPNGImage.Create do
try
  Assign(Bitmap);
  CompressionLevel := 9;
  SaveToFile(lImagefile);
finally
  Free;
end;
于 2013-02-02T11:20:54.947 に答える