浏览代码

* Patch from Martin Schreiber to fix grayscaled JPEG images

git-svn-id: trunk@11556 -
michael 17 年之前
父节点
当前提交
8f23e55789
共有 1 个文件被更改,包括 17 次插入5 次删除
  1. 17 5
      packages/fcl-image/src/fpreadjpeg.pas

+ 17 - 5
packages/fcl-image/src/fpreadjpeg.pas

@@ -223,6 +223,7 @@ var
     LinesRead: Cardinal;
     LinesRead: Cardinal;
     x: Integer;
     x: Integer;
     y: Integer;
     y: Integer;
+    c: word;
   begin
   begin
     InitReadingPixels;
     InitReadingPixels;
 
 
@@ -253,11 +254,22 @@ var
           Img.Colors[x,y]:=CorrectCMYK(Color);
           Img.Colors[x,y]:=CorrectCMYK(Color);
         end
         end
         else
         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;
-          Img.Colors[x,y]:=Color;
+        if fgrayscale then begin
+         for x:=0 to FInfo.output_width-1 do begin
+           c:= SampRow^[x] shl 8;
+           Color.Red:=c;
+           Color.Green:=c;
+           Color.Blue:=c;
+           Img.Colors[x,y]:=Color;
+         end;
+        end
+        else begin
+         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;
+           Img.Colors[x,y]:=Color;
+         end;
         end;
         end;
         inc(y);
         inc(y);
       end;
       end;