Bladeren bron

* Better upscaling. Fixes issue #40040

Michaël Van Canneyt 6 dagen geleden
bovenliggende
commit
f77f6effa1
1 gewijzigde bestanden met toevoegingen van 10 en 10 verwijderingen
  1. 10 10
      packages/fcl-image/src/fpreadjpeg.pas

+ 10 - 10
packages/fcl-image/src/fpreadjpeg.pas

@@ -389,7 +389,7 @@ var
       JCS_GRAYSCALE :
         for x:=0 to FInfo.output_width-1 do
         begin
-          c:= SampRow^[x] shl 8;
+          c:= SampRow^[x] * 257;
           Color.Red:=c;
           Color.Green:=c;
           Color.Blue:=c;
@@ -423,9 +423,9 @@ var
 
           Color.Blue :=  (FInfo.sample_range_limit^[yy + cconvert^.Cb_b_tab^[cb]]);
 
-          Color.Red:=Color.Red shl 8;
-          Color.Green:=Color.Green shl 8;
-          Color.Blue:=Color.Blue shl 8;
+          Color.Red:=Color.Red * 257;
+          Color.Green:=Color.Green * 257;
+          Color.Blue:=Color.Blue * 257;
 
           SetPixel(x, y, Color);
         end;
@@ -434,9 +434,9 @@ var
           SetPixel(x, y, CMYKToRGB(SampRow^[x*4+0], SampRow^[x*4+1], SampRow^[x*4+2], SampRow^[x*4+3]));
       else
         for x:=0 to FInfo.output_width-1 do begin
-          Color.Red:=SampRow^[x*3+0] shl 8;
-          Color.Green:=SampRow^[x*3+1] shl 8;
-          Color.Blue:=SampRow^[x*3+2] shl 8;
+          Color.Red:=SampRow^[x*3+0] * 257;
+          Color.Green:=SampRow^[x*3+1] * 257;
+          Color.Blue:=SampRow^[x*3+2] * 257;
           SetPixel(x, y, Color);
         end;
       end;
@@ -651,9 +651,9 @@ end;
 
 function TFPReaderJPEG.CMYKToRGB(const C, M, Y, K: Byte): TFPColor;
 begin
-  Result.Red := ((C*K) div 255) shl 8;
-  Result.Green := ((M*K) div 255) shl 8;
-  Result.Blue := ((Y*K) div 255) shl 8;
+  Result.Red := ((C*K) div 255) * 257;
+  Result.Green := ((M*K) div 255) * 257;
+  Result.Blue := ((Y*K) div 255) * 257;
   Result.Alpha := alphaOpaque;
 end;