ウェブサービスへのファイルアップロードサイズを縮小するために、イメージファイルの高さ/幅を最大値に制限しています。
JPGファイルの場合、これはうまくいきます。イメージのサイズを変更すると、ファイルサイズが小さくなります。ほとんどの場合、我々のコードの結果大きなファイルサイズで:PNGストレージサイズを縮小
していないが、PNGファイルのためにそう
procedure TFrmImageCheckAndResize.ResizePNGImage;
var
lSrcPNGImage, lTrgPNGImage: TdxPNGImage;
lSrcBitmap,lDestBitMap: TcxAlphaBitmap;
lNewWidth,lNewHeight: Integer;
lFactor: Real;
begin
lSrcPNGImage := TdxPNGImage.Create;
lSrcPNGImage.LoadFromFile(FFileName);
lSrcBitmap := TcxAlphaBitmap.CreateSize(lSrcPNGImage.Width, lSrcPNGImage.Height, True);
lSrcBitmap.Canvas.Draw(0, 0, lSrcPNGImage);
if lSrcPNGImage.Width > lSrcPNGImage.Height then
if lSrcPNGImage.Width > FEditImageRes.Value then
lFactor := lSrcPNGImage.Width
else
lFactor := 0
else
if lSrcPNGImage.Height > FEditImageRes.Value then
lFactor := lSrcPNGImage.Height
else
lFactor := 0;
if lFactor <> 0 then
begin
lFactor := lFactor/FEditImageRes.Value;
lNewWidth := Trunc(lSrcPNGImage.Width/lFactor);
lNewHeight := Trunc(lSrcPNGImage.Height/lFactor);
lDestBitMap := TcxAlphaBitmap.CreateSize(lNewWidth,lNewHeight, True);
cxSmoothResizeBitmap(lSrcBitMap, lDestBitMap, true);
lTrgPNGImage := TdxPNGImage.CreateFromBitmap(lDestBitmap);
end
else
begin
lDestBitmap := nil; // Silence the compiler
lTrgPNGImage := TdxPNGImage.CreateFromBitmap(lSrcBitmap);
end;
lTrgPNGImage.SaveToFile(StringReplace(FFileName,'.','_' + IntToStr(FEditImageRes.Value) + '.',[]));
lSrcBitmap.Free;
lDestBitmap.Free;
lTrgPNGImage.Free;
lSrcPNGImage.Free;
end;
FFileName
がディスクからロードされたイメージで、FEditImageRes.Value
は、我々は減らす最大寸法が含まれています。
Developer Expressコンポーネントを使用しており、このコードはアルファチャンネル(透過性)を維持しています。
私はどちらにも付いていません。
ticket with DevExpressを投稿しましたが、コードに問題はありません。 Paint.Netで
を、I 512 * 93に上記890 * 161のスクリーンショットを減らすかどうかのために使用されるアルゴリズムに応じて、混合の結果を参照してください。私はない他のどのソフトウェアを見
サイズ変更:512 * 353に縮小この550x386の写真を
15.697 Original.png
21.904 Resized_BiCubic.png
19.995 Resized_Bilineair.png
22.905 Resized_Fant.png
6.729 Resized_NearestNeigbour.png
Paint.Netの結果は次のとおりです。
375.229 Photo.png
419.122 Photo_Bicubic.png
402.277 Photo_Bilineair.png
407.959 Photo_Fant.png
416.619 Photo_NearestNeighbor.png
結果は予測できません。
質問:
(ほとんどの)サイズ変更されたPNGファイルのファイルサイズが実際に縮小されるようにするには、私のできることはありますか?
PNGはそのイメージの形式が正しくないようです。JPG –
圧縮は可逆です。サイズを小さくすると、細かいアルゴリズムでより多くの情報が保持されます。ファイルサイズが大きいほどシャープなイメージです。粗いアルゴリズムでは情報が少なく、ファイルサイズが小さくてもぼんやりした画像になります。画像を損なうことなく、より小さなファイルサイズを生成するはずの原画像と同じ鮮明さのように視覚的に見えるアルゴリズムを解決する必要があります。イメージが混在している場合(例えば、グラフィックと写真)は不可能です。 –
photo.pngはpaint.netに保存されていますか?一致しない場合、その比較は無効です。 –