2010-08-14 5 views

Répondre

0

Vous pouvez utiliser WPF pour créer la nouvelle image et l'enregistrer dans un fichier image.

0

Si une image a déjà été anti-aliasée par rapport à une couleur d'arrière-plan particulière, la suppression automatique de cet anti-aliasing sera difficile en code. Le mieux est de modifier manuellement l'image, malheureusement.

0

Il n'y a aucun moyen de le faire dans le cas général. Mais si vous limitez un peu vos exigences, cela peut être fait.

Je peux vous dire comment le faire si nous supposons l'image anti-crénelage est d'une couleur unie à nous connaître, et nous avons l'arrière-plan dans un fichier séparé. Par exemple, disons que l'image anti-aliasée consiste en un mot dans une police, en noir. Et l'arrière-plan est arbitraire. Puis, à "re-anticrénelage" l'image pour un autre arrière-plan, vous avez besoin de deux étapes:

  1. Recover l'image anti-crénelage d'origine, isolées de l'arrière-plan. Pour ce faire, effectuez cet algorithme:

    for_every_pixel {
    isolated_pixel_intensity = 1 - rgb_distance(mixed_pixel_rgb - background_pixel_rgb, foreground_solid_rgb)
    }
    // rgb_distance is implemented as Pythagora's Theorem in 3D.

  2. Maintenant que vous avez l'image de premier plan, mélanger tout simplement avec votre nouvel arrière-plan.

Vous devrez écrire le code vous-même. Vous pouvez utiliser System.Drawing.Bitmap comme base puisque vous utilisez .NET.

Modifier: Ne tenez pas compte de cela. Il ne peut pas réellement fonctionner, car il y a des cas qui sont impossibles à résoudre - à savoir, lorsque l'image d'arrière-plan contient des zones de la même couleur que le premier plan.

Questions connexes