هل هناك طريقة لتعيين لون افتراضي للشفافية عند استخدام كولوركونفرتوب في جافا2د?

StackOverflow https://stackoverflow.com/questions/8392902

سؤال

أنا تحويل صورة مع الشفافية في ذلك إلى كولورسباس التي ليس لديها الشفافية.أود أن تعيين لون الخلفية للمناطق شفافة.الآن عندما أقوم بتحويله ، تتحول أي منطقة شفافة إلى اللون الأسود في الصورة النهائية.هل هناك طريقة للقيام بذلك أثناء التحويل بين مساحات الألوان?هنا هو رمز بلدي يمكنني استخدام لتحويل بين مسافات اللون:

public BufferedImage convertColorspace( BufferedImage source, int newType) {
    BufferedImage destination = new BufferedImage( source.getWidth(), source.getHeight(), newType);
    ColorConvertOp colorConvertOp = new ColorConvertOp(null);
    colorConvertOp.filter(source, destination);
    return destination;
}

// here is how its used
BufferedImage converted = convertColorspace(combinedImage, BufferedImage.TYPE_3BYTE_BGR);

أنا تحويل من بوفيريديماج.اكتب _4بيت_أرجب إلى الصورة المخزنة مؤقتا.اكتب _3بيتي_ بي جي آر.

هل كانت مفيدة؟

المحلول

ماذا عن:

    BufferedImage temp = new BufferedImage(source.getWidth(), source.getHeight(), 
        BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2 = temp.createGraphics();
    g2.setColor(Color.green);
    g2.fillRect(0, 0, source.getWidth(), source.getHeight());
    g2.drawImage(0, 0, source, null);
    g2.dispose();

ثم اتصل colorConvertOp.filter مع temp بدلا من source.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top