怎么样把一个bmp图片300dpi(分辨率)转换成200dpi(分辨率)
好象有函数不知道是那个请高手指点

解决方案 »

  1.   

    //设定BMP分辨率
    procedure SetBmpDPI(Bitmap: TBitmap; DPI: Integer);
    var
       Stream: TMemoryStream;
       Data: Word;
    begin
        try
           Stream := TMemoryStream.Create;
           Bitmap.SaveToStream(Stream);
           Data := Round(DPI * 39.370079);
           Stream.Position := 38;
           if Stream.Write(Data,2) = 2 then
              begin
              Stream.Position := 42;
              if Stream.Write(Data,2) = 2 then
                  begin
                  Stream.Position := 0;
                  Bitmap.LoadFromStream(Stream);
                  end
              else
                  //Error writing to Stream...
                  ShowMessage('Error writing to Stream. Data not written.');          end
           else
               //Error writing to Stream...
               ShowMessage('Error writing to Stream. Data not written.');
        finally
               Stream.Free;
        end;
    end;
      

  2.   

    我要做的工作是这样的,先把 Image[i].Picture.Bitmap图片的分辨率转华成10     
      在把Image[i].Picture.Bitmap图片转化为jpeg的格式,在保存成文件:
      我象这样做怎么不行,虽然能把Image[i].Picture.Bitmap的分辨率转华成10但是
      转变成jpeg后怎么还是老的分辨率,不知道应该怎么改
            SetBmpDPI(Image[i].Picture.Bitmap,10);
            Jpeg.Assign(Image[i].Picture.Bitmap);
            Jpeg.CompressionQuality := 100;
            Jpeg.Compress;
            strfilepath := Edit1.Text +'\'+ str+ '.jpg';
            try
              Jpeg.SaveToFile(strfilepath);
            except
              errflag := false;
            end;
      

  3.   

    改了dpi后怎么图片的大小没有改变呀
      

  4.   

    改DPI本来就和像素没关系,只和打印尺寸有关系
    系统默认DPI都是72,转换格式的时候也都是以72为标准
    要改JPEG格式的DPI需要分析下JPEG文件的内部格式把关于DPI的数值改写下就OK了