在Glide中查找并​​加载缓存的图像

时间:2015-06-26 06:58:23

标签: caching universal-image-loader android-glide

我是滑翔新手,想要将我的应用程序从universalimageloader迁移到滑行。 我想将缓存的图像从磁盘转换为图像文件,并将其显示为ImageView。

当我使用universalimageloader时,我可以通过这种方式轻松完成:

File imageFile = DiskCacheUtils.findInCache(image_url,  ImageLoader.getInstance().getDiscCache());
//then show it into image view
String file_target = "file://"+imageFile.getPath();
ImageLoader.getInstance().displayImage(target, imageView);

但是我没有找到一种方法来从文档中做到这一点。

有可能吗?

1 个答案:

答案 0 :(得分:2)

使用以下代码

%!PS

/WidthRGB   83 def
/HeightRGB  89 def

/SX 036 def
/SY 037 def
/XA 060 def

%
% Procedure to generate test mask data
%
% WM and HM must be defined prior to invocation
%     MaskGen -
%
% The mask data is stored into a string named /MaskData
%
% The mask consists of a "target". Bits past width WM are
% filled with 1's to make sure that pad bits are ignored.
%
/MaskGen {
  /H8 HM 8 div def
  /X0 WM 2 div def
  /Y0 HM 2 div def
  /WB WM 7 add 8 div cvi def
  /MaskData WB HM mul string def
  /MB [ 128 64 32 16 8 4 2 1 ] def
  0 1 HM 1 sub {
    /Y exch def
    0 1 WB 1 sub {
      /B exch def   % byte within the row
      /C B Y WB mul add def
      /P 0 def
      0 1 7 {
        /b exch def % bit within the character
        /X b B 8 mul add def
        X WM lt
          { X Y eq
            X HM 1 sub Y sub eq or
            Y Y0 gt X X0 sub abs 2 le and or
            X X0 sub WM div dup mul Y Y0 sub HM div dup mul add sqrt 9 mul cvi 2 mod 1 eq or
          }
          { true }  % pad bits are always set
        ifelse
        % stack: true if pixel is set
        {
          MB b get P or /P exch def
        } if
      } for % Bits within a byte
      MaskData C P put
    } for % Bytes within the row
  } for % Rows in the mask
} bind def          % MaskGen

% -----------------------------------------------------------------------

% -----------------------------------------------------------------------
%
% Procedures for ImageMatrix creation
/IMLRTB { [ WD 0 0 HD neg 0 HD ] } def

% Procedure to generate image data
%
% WD and HD must be defined prior to invocation
%    { proc } ImageGen -
%
% The procedure is called once for each pixel
% Local definitions are R, G, B, X and Y

% Example: Generate RGB Chunky pixel data (single data source) BPC = 8
%       /WD WidthRGB def
%       /HD HeightRGB def
%       /RGBData WD HD mul 3 mul string def
%   { X Y WD mul add 3 mul RGBData
%     dup 2 index R 255 mul cvi put
%     dup 2 index 1 add G 255 mul cvi put
%     exch 2 add B 255 mul cvi put
%   } ImageGen

/ImageGen {
  gsave
  0 1 HD 1 sub {
    /Y exch def
    0 1 WD 1 sub {
      /X exch def
      /D X WD 2 div sub WD div dup mul Y HD 2 div sub HD div dup mul add sqrt def
      /D D .6 div def
      /A X WD 2 div sub Y HD 2 div sub atan 360 div def
      A                               % Hue
      .7 D .3 sub .60 div sub  % Saturation
      dup 0.05 lt
        { .95 D .8 sub 3 mul sub 3 mul cvi 3 div sqrt } % Level once Saturation < 0
        { .7 D .25 sub .75 div add }  % Level inside
      ifelse
      X WD 2 div gt Y HD 2 div sub abs 2 le and { pop 0 } if   % asymmetric marker
      sethsbcolor
      currentrgbcolor /B exch def /G exch def /R exch def
      dup exec
    } for
  } for
  pop       % discard the procedure
  grestore
} bind def

% -----------------------------------------------------------------------
%
%     Procedures to use generated string data as procedure or files

/WD WidthRGB def
/HD HeightRGB def

/sM WidthRGB 2 mul 1 sub string def % long enough to hold more than one mask line
/sD WidthRGB 7 mul 1 sub string def % long enough to hold more than one 12 bit RGB line
                                % worst case is 12bit ImageType3 InterleaveType 1 == 48 bits

/MaskDProc {
  /FM MaskData dup length () /SubFileDecode filter def
  { { FM sM readstring pop } }
} bind def

/MaskDFile {
  MaskData dup length () /SubFileDecode filter
  /MDF 1 index def
} bind def

/RGBDProc {
  /FD RGBData dup length () /SubFileDecode filter def
  { { FD sD readstring pop } }
} bind def

/RGBDFile {
  RGBData dup length () /SubFileDecode filter
  /RGBDF 1 index def
} bind def

% YY, SX, SY, W, HD (Data) WM, HM (Mask) should be defined prior to invocation
%                                                   (IT is InterleaveType)
% X Y BPC matrix source multi MaskDecode DataDecode IT DoImage3 -
%
/DoImage3 {
  gsave
  /DeviceRGB setcolorspace
  /IT exch def
  /DD exch def
  /DM exch def
  /MS exch def
  /S exch def       % May be an array of sources - For InterleaveType 3
                        % S[0] is the Mask DataSource
  /M exch def
  /BPC exch def
  /XX 1 index def
  YY translate SX SY scale
  0 setlinewidth 0 0 moveto 1 0 lineto 1 1 lineto 0 1 lineto 0 0 lineto stroke

  /DataImage
  <<
  /ImageType        1
  /Width        WD
  /Height       HD
  /ImageMatrix      M
  /MultipleDataSources  MS
  /DataSource       IT 3 ne { S } { S 1 get exec } ifelse
  /BitsPerComponent BPC
  /Decode       DD
  >>
  def
  /MaskImage
  <<
  /ImageType        1
  /Width        WM
  /Height       HM
  /ImageMatrix      % construct the mask matrix using signs from the DataImage matrix
                        /M0 M 0 get WD abs div cvi def
                        /M3 M 3 get HD abs div cvi def
                        /M4 M 4 get WD abs div cvi def
                        /M5 M 5 get HD abs div cvi def
                        [ WM M0 mul 0 0 HM M3 mul WM M4 mul HM M5 mul ]
  IT 3 eq {
    /DataSource     S 0 get exec    % DataSource only allowed for InterleaveType 3
  } if
  /BitsPerComponent IT 1 eq { BPC } { 1 } ifelse
  /Decode       DM
  >>
  def
  <<
  /ImageType        3
  /DataDict     DataImage
  /MaskDict     MaskImage
  /InterleaveType   IT
  >>
  image
  grestore
} bind def

% ----------------------------------------------------------------------
%       InterleaveType 3, BPC==8, WM=WD, HM=HD
%       IT 3 is line interleave -- Mask and Data in separate sources
%       RGB Image Data chunky (MultipleDatasources==false).
  /YY 50 def

  % Generate the MaskData first
  /WM WD def
  /HM HD def
  MaskGen

  % Generate the Data Image
  /RGBData WD HD mul 3 mul string def
  { X Y WD mul add 3 mul RGBData
    dup 2 index R 255 mul cvi put
    dup 2 index 1 add G 255 mul cvi put
    exch 2 add B 255 mul cvi put
  } ImageGen

   50  8  IMLRTB [ MaskData  RGBData  ] false  [0 1]    [1 0 1 0 1 0]  3 DoImage3

% ----------------------------------------------------------------------

showpage