⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imageutil.java

📁 基于j2me的图片特效(缩放
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
         int argb;
         int temp;
          
         for (int i = 0; i < srcH; i++)
         {
              for(int ii=0;ii<srcW;ii++)
        {
   argb = srcPixels[i*srcW+ii];
                        a = ((argb & 0xff000000) >> 24); // alpha channel
                        r = ((argb & 0x00ff0000) >> 16); // red channel
                        g = ((argb & 0x0000ff00) >> 8); // green channel
                        b = (argb & 0x000000ff); // blue channel
                        temp = (int)(.299*(double)r+.587*(double)g+.114*(double)b);
                        r = temp;
                        g = temp;
                        b = temp;
                        srcPixels[i*srcW+ii] = ((a << 24) | (r << 16) | (g << 8) | b);
        }
         }
        return drawPixels(srcPixels, srcW, srcH);

         
    }
     
      /*
   * 图片特效粉笔画
   */
     public Image effect_crayon(Image src)
     { 
         int srcW = src.getWidth();
         int srcH = src.getHeight();  
         int[] srcPixels = getPixels(src);
         int r = 0;
         int g = 0;
         int b = 0;
         int a = 0;
         int argb;   
         int r1 = 0;
         int g1 = 0;
         int b1 = 0;
         int a1 = 0;
         int r2 = 0;
         int g2 = 0;
         int b2 = 0;
         int a2 = 0;
         
         for (int i = 0; i < srcH; i++)
         {
              for(int ii=0;ii<srcW;ii++)
       {
                  argb = srcPixels[i*srcW+ii];
                  a = ((argb & 0xff000000) >> 24); // alpha channel
                  r = ((argb & 0x00ff0000) >> 16); // red channel
                  g = ((argb & 0x0000ff00) >> 8); // green channel
                  b = (argb & 0x000000ff); // blue channel 
                  if(i+1 == srcH)
                  {
                       r1= 0;
                       g1= 0;
                       b1=0;
                  }
                  else
                  {
                     argb = srcPixels[(i+1)*srcW+ii]; 
                     //a1 = ((argb & 0xff000000) >> 24); // alpha channel
                     r1 = ((argb & 0x00ff0000) >> 16); // red channel
                     g1 = ((argb & 0x0000ff00) >> 8); // green channel
                     b1 = (argb & 0x000000ff); // blue channel 
                  }
                  if(ii+1 == srcW){
                       r2= 0;
                       g2= 0;
                       b2=0;
                  }
                  else
                  {
                      argb = srcPixels[i*srcW+ii+1]; 
                      r2 = ((argb & 0x00ff0000) >> 16); // red channel
                      g2 = ((argb & 0x0000ff00) >> 8); // green channel
                      b2 = (argb & 0x000000ff); // blue channel
                  }
                 // rr1=(r1-r2)^2  rr2=(r1-r3)^2
                  r = (int)Math.sqrt((double)(2*(r-r1)*(r-r1)+(r-r2)*(r-r2)));
                  g = (int)Math.sqrt((double)(2*(g-g1)*(g-g1)+(g-g2)*(g-g2)));
                  b = (int)Math.sqrt((double)(2*(b-b1)*(b-b1)+(b-b2)*(b-b2)));
                  r =255-r; // red channel
                  g =255-g; // green channel
                  b =255-b; // blue channel
                  srcPixels[i*srcW+ii] = ((a << 24) | (r << 16) | (g << 8) | b);
              }
         }
         return drawPixels(srcPixels, srcW, srcH);
     }
     
         /*
   * 图片特效蒙版
   */
      public Image effect_hoodwink(Image src)
    {
         int srcW = src.getWidth();
         int srcH = src.getHeight();  
         int[] srcPixels = getPixels(src);
         int r = 0;
         int g = 0;
         int b = 0;
         int a = 0;
         int argb;

          
         for (int i = 0; i < srcH; i++)
         {
              for(int ii=0;ii<srcW;ii++)
        {
   argb = srcPixels[i*srcW+ii];
                        a = ((argb & 0xff000000) >> 24); // alpha channel
                        r = ((argb & 0x00ff0000) >> 16); // red channel
                        g = ((argb & 0x0000ff00) >> 8); // green channel
                        b = (argb & 0x000000ff); // blue channel
                        r = (int)(.299*(double)r);
                        g = (int)(.587*(double)g);
                        b = (int)(.114*(double)b);
                        srcPixels[i*srcW+ii] = ((a << 24) | (r << 16) | (g << 8) | b);
        }
         }
        return drawPixels(srcPixels, srcW, srcH);

         
    }
     
    private   int[]   getTransImg(int alpha,int[] srcRgbdata,int[] desRgbdata)   
    {    
           int []   tempRgbData = new int[desRgbdata.length];   
        
           int   sr  ;
           int   sg ;
           int   sb ;
           int   dr  ;  
           int   dg ;
           int   db ; 
           int   tr  ;
           int   tg  ;
           int   tb  ;
           for(int   i=0;i<desRgbdata.length;i++)   
           {   
              sr   =   (srcRgbdata[i]&0xff0000)>>16;   
              sg   =   (srcRgbdata[i]&0xff00)>>8;   
              sb   =   srcRgbdata[i]&0xff;   
              dr   =   (desRgbdata[i]&0xff0000)>>16;   
              dg   =   (desRgbdata[i]&0xff00)>>8;   
              db   =   desRgbdata[i]&0xff;   
              tr   =   (sr*alpha   +   dr*(255-alpha))/255;   
              tg   =   (sg*alpha   +   dg*(255-alpha))/255;   
              tb   =   (sb*alpha   +   db*(255-alpha))/255;     
              tempRgbData[i]   =   (tr<<16)|(tg<<8)|tb;   
           }   
         return   tempRgbData;   
       } 
    
         /*
   * 图片特旋转
   */
    public Image effect_rotate(Image src,int direction) 
    { 
        Sprite sprite = new Sprite(src);
        switch(direction)
        {
                  case 1:
                            sprite.setTransform(sprite.TRANS_ROT270);
                            break;
                  case 2:
                            sprite.setTransform(sprite.TRANS_ROT90);   
                            break;
        }
       
        Image temp = Image.createImage(src.getHeight(),src.getWidth());
  Graphics g = temp.getGraphics();
        sprite.setPosition(0,0);
        sprite.paint(g);
        return temp;   
     } 

    
   

       /*
   * 图片特霓虹灯
   */
    public Image effect_neonLight(Image src)
    {
         int srcW = src.getWidth();
         int srcH = src.getHeight();  
         int[] srcPixels = getPixels(src);
         int r = 0;
         int g = 0;
         int b = 0;
         int a = 0;
         int argb;   
         int r1 = 0;
         int g1 = 0;
         int b1 = 0;
         int a1 = 0;
         int r2 = 0;
         int g2 = 0;
         int b2 = 0;
         int a2 = 0;
         
         for (int i = 0; i < srcH; i++)
         {
              for(int ii=0;ii<srcW;ii++)
       {
                  argb = srcPixels[i*srcW+ii];
                  a = ((argb & 0xff000000) >> 24); // alpha channel
                  r = ((argb & 0x00ff0000) >> 16); // red channel
                  g = ((argb & 0x0000ff00) >> 8); // green channel
                  b = (argb & 0x000000ff); // blue channel 
                  if(i+1 == srcH)
                  {
                       r1= 0;
                       g1= 0;
                       b1=0;
                  }
                  else
                  {
                     argb = srcPixels[(i+1)*srcW+ii]; 
                     //a1 = ((argb & 0xff000000) >> 24); // alpha channel
                     r1 = ((argb & 0x00ff0000) >> 16); // red channel
                     g1 = ((argb & 0x0000ff00) >> 8); // green channel
                     b1 = (argb & 0x000000ff); // blue channel 
                  }
                  if(ii+1 == srcW){
                       r2= 0;
                       g2= 0;
                       b2=0;
                  }
                  else
                  {
                      argb = srcPixels[i*srcW+ii+1]; 
                      r2 = ((argb & 0x00ff0000) >> 16); // red channel
                      g2 = ((argb & 0x0000ff00) >> 8); // green channel
                      b2 = (argb & 0x000000ff); // blue channel
                  }
                 // rr1=(r1-r2)^2  rr2=(r1-r3)^2
                  r = (int)Math.sqrt((double)(2*(r-r1)*(r-r1)+(r-r2)*(r-r2)));
                  g = (int)Math.sqrt((double)(2*(g-g1)*(g-g1)+(g-g2)*(g-g2)));
                  b = (int)Math.sqrt((double)(2*(b-b1)*(b-b1)+(b-b2)*(b-b2)));
                  srcPixels[i*srcW+ii] = ((a << 24) | (r << 16) | (g << 8) | b);
              }
         }
         return drawPixels(srcPixels, srcW, srcH);
    }

}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -