有时候需要打印图片,别人提供的JPG图片,同样用200的分辨率扫描的,用PHTOSHOP打开,看图片尺寸时,分辨率有的是200,并且尺寸是对的,有的却变成了72的分辨率,图片尺寸变成了几十厘米乘几十厘米,大了很多,这样打印的时候,就很难知道真实的图片尺寸,用DELPHI编程来打印,就很难处理,不知有什么解决方法?

解决方案 »

  1.   

    MyJPEG := TJPEGimage.Create;
    try
    MyJPEG.LoadFromFile(OpenPictureDialog1.FileName);
    showmessage(inttostr(MyJPEG.Height) + ' ' +inttostr(MyJPEG.Width));
    finally
    MyJPEG.free;
    end;
      

  2.   

    假如文件中的Dpi信息不对,那么理论上是没有办法知道文件的真实尺寸的。作为折中的办法,只好让用户来决定应该把图片打成多大。
      

  3.   

    "有的是200,并且尺寸是对的,有的却变成了72的分辨率" 什么意思啊?是同一个Jpg吗?
      如果是,那就不可思义了!如国是不同的jpg,
      那只可能是扫描仪器设置不同(否则也不可思义).
      

  4.   

    Uses
     GDIPAPI,GDIPOBJvar
      GPImage      : TGPImage;
      JPGWidth,JPGHeight : Integer;
    begin
      GpImage  := TGPImage.Create('\test.jpg');
      JPGWidth := GpImage.GetWidth;
      JPGHeight:= GPImage.GetHeight;
      GPImage.Free; 
    end;
      

  5.   

    这个问题我也正在遇到
    楼主的意思应该是jpg文件来源于不同的用户
    现在需要统一处理。
    我现在想的办法是,先统一处理成比如200dpi的jpg.
    然后打印。
      

  6.   

    有个误区,图形的像素尺寸和DPI没有任何联系只和打印尺寸发生关系
    PS里有误导嫌疑,就是修改DPI会自动修改像素尺寸
    LZ可以试验一下,修改DPI,但不改变像素尺寸,图形大小是不会发生变化的,但打印尺寸就发生变化了,印刷行业为保证打印质量一般推荐300点DPI,WINDOWS桌面默认是72点,DELPHI也是72点
      

  7.   

    "有的是200,并且尺寸是对的,有的却变成了72的分辨率" 你都知道200是对的了,不就好了?
    实在不行
    Uses
     GDIPAPI,GDIPOBJvar
      GPImage      : TGPImage;
      JPGWidth,JPGHeight : Integer;
    begin
      GpImage  := TGPImage.Create('\test.jpg');
      JPGWidth := GpImage.GetWidth;
      JPGHeight:= GPImage.GetHeight;
      GPImage.Free; 
    end;这各写法没错 ,可以使用阿,获得的就是真实的,不会有问题