RTRT

解决方案 »

  1.   

    使用BufferedImage.
    构造时,用BufferedImage(int width, int height, int imageType)
    参数imageType用BufferedImage的字段TYPE_4BYTE_ABGR_PRE 这种图有红,绿,蓝,透明度四种参数.
      

  2.   

    不行,我是要将一张PNG图实现透明....楼上的是在一个透明的底上.再干活~~
    (可能我的理解错了~~)希望高人指点指点...
      

  3.   

    不知道Java支持这种格式不?
      

  4.   

    你重新构造一个bufferedImage得了,大小一样,不过imageType用TYPE_4BYTE_ABGR_PRE ,然后取得新bufferedImage的WritableRaster对象,再取得原图形的rgb数值再加上你需要的透明度数值,用WritableRaster写到新bufferedImage里去,用这种方式把图形每个象素点循环一遍,就可以得到你想要的图形,在写到相应的文件里去,就行了吧。
      

  5.   

    java,.net,asp,hacker技术讨论群14401742,诚招高手加入,共同讨论,共同发展。
      

  6.   

    在Java2D中设置画图的透明度:float alpha = 0.5f; // 透明度
    Graphics2D g2d = bufferedImage.createGraphics();// 设置透明
    g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); // 开始
    // g2d.drawImage(); // 画图
    g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); // 结束
      

  7.   

    现在,可以实现透明的
    但我的方法是..跟zzddl(磷虾)的差不多,我是用BufferedImage的getRGB,然后整个图循环一遍,把跟之前象素getRGB得到的相同的值,设为透明值的.写到新的图片中.但,现在我发现一个问题.... getRGB 得到的值是一个负数~~比如:
    -16776961 蓝
    -16711936 绿
    -65536    红而,凡事>0的,都是透明的....请问这是为什么??getRGB 得到的应该是RGBA 值,请问,这个值是怎么算出来的????谢谢
      

  8.   

    TYPE_4BYTE_ABGR_PRE
    他是用4个byte来保存ABGR四种颜色分量,虽然他外在形式是int数值,但是他这个数字逻辑上和数值没有关系,而是这个int类型中每个字节都对应一种一种颜色分量的比例罢了。至于你说得透明和正负的关系,我想是巧合吧,我记得int类型是使用一个数位来表示正负的,而这个数位所在的字节恰巧和表示透明度的a是同一个字节吧。
      

  9.   

    噢~~~先谢谢zzddl(磷虾) ..
    照你那么说,得到的INT,其实是颜色分量,现在是这样子的~我遇到这样一个问题
    我用手机拍照,得到的照片是有背景色的,比如说是绿色...现在我要把这绿色除去...但由于灯光的问题...可能绿色发生了不同的变化...就是说,我要除去,跟这个绿色十分相近的颜色..
    但我,怎么通过得到的这个INT值,知道其它相近的颜色呢?有个范围就好了...........
    谢谢
      

  10.   

    BufferedImage.getRaster().getPixel(int x,  int y, int[] iArray)int[] iArray是预分配的int数组。
    数组中的数值应该在0到255之间吧。这些就对应x,y点颜色的argb四个分量。你说的绿色十分相近的颜色,应该是这四个分量变动的结果。比如每个分量以绿色为中心正负20、30变动之类的,