/**
* 調節圖像明暗的方法,start和 end 的值 在0-255之間,
* 比如,0-16就會讓圖像變得很暗,0-255保持不變
*/
public static Image lightenessRGB(Image image, int start, int end) {
??? // System.out.println("reverseRGB IN");
??? int width = image.getWidth();
??? int height = image.getHeight();
??? // 獲得圖像的ARGB數據,存儲在rawInt里
??? int[] raw = null;
??? try {
??????? raw = new int[width * height];
??????? image.getRGB(raw, 0, width, 0, 0, width, height);
??????? int len = raw.length;
??????? // 開始循環,獲得圖像里每個像素的顏色,然后處理
??????? for (int i = 0; i < len; i++) {
??????????? // 獲得像素的顏色
??????????? int color = raw[i];
??????????? // System.out.println(Integer.toHexString(color));
??????????? // 獲得alpha
??????????? int alpha = 0xFF;
??????????? // System.out.println(Integer.toHexString(alpha));
??????????? // 獲得紅色
??????????? int red = (color & 0x00FF0000) >> 16;
??????????? // System.out.println(Integer.toHexString(red));
??????????? // 獲得綠色
??????????? int green = (color & 0x0000FF00) >> 8;
??????????? // System.out.println(Integer.toHexString(green));
??????????? // 獲得藍色
??????????? int blue = (color & 0x000000FF);
??????????? // System.out.println(Integer.toHexString(blue));
??????????? // 網上找到的算法
??????????? // 生成新顏色
??????????? red = start + end * red / 255;
??????????? green = start + end * green / 255;
??????????? blue = start + end * blue / 255;
??????????? // 生成新顏色
??????????? // System.out.println(Integer.toHexString((alpha << 24)+ (red <<
??????????? // 16)+(green <<
));
??????????? color = (alpha << 24) + (red << 16) + (green <<
+ blue;
??????????? raw[i] = color;
??????? }
??????? // System.out.println("blendRGB OUT");
??????? return Image.createRGBImage(raw, width, height, true);
??? } catch (Error e) {
??????? // e.printStackTrace();
??????? ImageAlbum.showAlert("圖像尺寸太大,不能完成此操作.");
??????? return image;
??? } catch (Exception e) {
??????? e.printStackTrace();
??????? return image;
??? } finally {
??????? raw = null;
??? }
}
* 調節圖像明暗的方法,start和 end 的值 在0-255之間,
* 比如,0-16就會讓圖像變得很暗,0-255保持不變
*/
public static Image lightenessRGB(Image image, int start, int end) {
??? // System.out.println("reverseRGB IN");
??? int width = image.getWidth();
??? int height = image.getHeight();
??? // 獲得圖像的ARGB數據,存儲在rawInt里
??? int[] raw = null;
??? try {
??????? raw = new int[width * height];
??????? image.getRGB(raw, 0, width, 0, 0, width, height);
??????? int len = raw.length;
??????? // 開始循環,獲得圖像里每個像素的顏色,然后處理
??????? for (int i = 0; i < len; i++) {
??????????? // 獲得像素的顏色
??????????? int color = raw[i];
??????????? // System.out.println(Integer.toHexString(color));
??????????? // 獲得alpha
??????????? int alpha = 0xFF;
??????????? // System.out.println(Integer.toHexString(alpha));
??????????? // 獲得紅色
??????????? int red = (color & 0x00FF0000) >> 16;
??????????? // System.out.println(Integer.toHexString(red));
??????????? // 獲得綠色
??????????? int green = (color & 0x0000FF00) >> 8;
??????????? // System.out.println(Integer.toHexString(green));
??????????? // 獲得藍色
??????????? int blue = (color & 0x000000FF);
??????????? // System.out.println(Integer.toHexString(blue));
??????????? // 網上找到的算法
??????????? // 生成新顏色
??????????? red = start + end * red / 255;
??????????? green = start + end * green / 255;
??????????? blue = start + end * blue / 255;
??????????? // 生成新顏色
??????????? // System.out.println(Integer.toHexString((alpha << 24)+ (red <<
??????????? // 16)+(green <<

??????????? color = (alpha << 24) + (red << 16) + (green <<

??????????? raw[i] = color;
??????? }
??????? // System.out.println("blendRGB OUT");
??????? return Image.createRGBImage(raw, width, height, true);
??? } catch (Error e) {
??????? // e.printStackTrace();
??????? ImageAlbum.showAlert("圖像尺寸太大,不能完成此操作.");
??????? return image;
??? } catch (Exception e) {
??????? e.printStackTrace();
??????? return image;
??? } finally {
??????? raw = null;
??? }
}
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
