Evet küçük bir kod parçasıyla bunu halledebilirsin. Yalnız hangi image formatıyla çalıştığın ve hangi geliştirme ortamını kullandığın önemli. Farklı dosya formatlarında renk bilglileri farklı saklanıyor olabilir. Örneğin jpeg formatı sıkıştırılmış olduğundan byte bilgilerini okurken kullandığın programlama diline ait özel sınıflar kullanman gerekebilir.
Java ile geliştirme yaptığını ve JPEG dosyaları ile çalıştığını varsayarsak aşağıdaki kod parçası ile resmin pixellerinde değişiklik yapabilirsin. Aşağıdaki kod parçası ^ (exor) operatörü kullanarak her byte'ı 1 ile exor'layarak renk bilgisini tersine çeviriyor. Sen ihtiyacına göre & (and) veya | (or) kullanabilirsin.
String srcUrl = "C:/input.jpg";
String destUrl = "C:/output.jpg";
int mask = 0xFFFFFF;
//url'ile belirtilen resmi JPGEG olarak bufferedImage'e atama
FileInputStream fis = new FileInputStream(srcUrl);
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(fis);
BufferedImage img = decoder.decodeAsBufferedImage();
//resmi işleme
for(int i=0;i<img.getWidth();i++) {
for(int j=0;j<img.getHeight();j++) {
img.setRGB(i,j,img.getRGB(i,j) ^ mask );
}
}
//JPEG olarak kaydetme
File file;
file = new File(destUrl);
ImageIO.write(img, "jpg", file);
Ayrıca kullandığın resim editörüne ait filtre tanımlama seçeneği varsa o da işini görebilir, onu da araştırabilirsin,
İyi Çalışmalar.
|