一鍵生成IOS App Icon工具
阿新 • • 發佈:2018-09-15
div sca sdn 全部 修改 mage top pri exce
每次要提審AppStore,美術總是給一個1024x1024的 Icon ,然後就進入了繁瑣的修改圖片 size 和 plist 文件 Icon 配置的過程,很繁瑣。這些應該是可以偷懶的啊~然後就有了這篇。
需求:
提供一張Icon 1024x1024 png 不帶alpha通道,和Assets文件夾內的AppIcon.appiconset內的Content.json文件,
輸出:
Content.json 中指定的所有Icon。 (包括命名之類的全部搞定,問題雖然小,但是省了很多事)。
生成結果如圖 :
(1)首先嘗試用Grahics2D來draw,
public static voidPngResize(String srcImageFile, String result, int width,int height) { try { BufferedImage src = ImageIO.read(new File(srcImageFile)); Image image = src.getScaledInstance(width,height,Image.SCALE_DEFAULT); BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); Graphics g= newImage.createGraphics(); g.drawImage(image, 0, 0, null); g.dispose(); newImage.flush(); ImageIO.write(newImage, "PNG", new File(result)); } catch (IOException e) { e.printStackTrace(); } }
發現draw出來的圖片毛邊情況很嚴重,所以放棄.
(2) 後面發現 Thumbnailator 這個Java 類庫的處理效果要好很多啊 所以果斷用這個
public static int PngResize(String srcImageFile, String result, float width_, float height_){ try { Thumbnails.of(srcImageFile).size((int)width_, (int)height_).outputQuality(1f).keepAspectRatio(false).toFile(result); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
出來效果對比 很好。記錄下
Thumbnailator 類庫還有如下操作:
//按指定大小把圖片進行縮和放(會遵循原圖高寬比例) 此處把圖片壓成400×500的縮略圖 變為400*300,遵循原圖比例縮或放到400*某個高度 Thumbnails.of(fromPic).size(400,500).toFile(toPic);////按照比例進行縮小和放大 Thumbnails.of(fromPic).scale(0.2f).toFile(toPic);//按比例縮小 Thumbnails.of(fromPic).scale(2f);//按比例放大 //不按比例,就按指定的大小進行縮放 Thumbnails.of(fromPic).size(100, 100).keepAspectRatio(false).toFile(toPic); //或者Thumbnails.of(fromPic).forceSize(100,100).toFile(toPic); //旋轉圖片,rotate(角度),正數則為順時針,負數則為逆時針 Thumbnails.of(fromPic).size(200,200).rotate(90).toFile(toPic); //圖片尺寸不變,壓縮圖片文件大小outputQuality實現,參數1為最高質量 Thumbnails.of(fromPic).scale(1f).outputQuality(0.25f).toFile(toPic); //給圖片加水印,watermark(位置,水印圖,透明度)Positions.CENTER表示加在中間 Thumbnails.of(fromPic).size(400,400).watermark(Positions.CENTER,ImageIO.read(waterPic),0.5f).outputQuality(0.8f).toFile(toPic); //用sourceRegion()實現圖片裁剪//圖片中心300*300的區域,Positions.CENTER表示中心,還有許多其他位置可選 Thumbnails.of(fromPic).sourceRegion(Positions.CENTER,300,300).size(300,300).toFile(toPic); //圖片中上區域300*300的區域 Thumbnails.of(fromPic).sourceRegion(Positions.TOP_CENTER,300,300).size(300,300).toFile(toPic); //用outputFormat(圖像格式)轉換圖片格式,保持原尺寸不變 Thumbnails.of(fromPic).scale(1f).outputFormat("png").toFile("picture/png格式的圖片.png"); //輸出成文件流OutputStream OutputStream os=new FileOutputStream(toPic); Thumbnails.of(fromPic).size(120,120).toOutputStream(os); //輸出BufferedImage,asBufferedImage()返回BufferedImage BufferedImage bi=Thumbnails.of(fromPic).size(120,120).asBufferedImage(); ImageIO.write(bi,"jpg",toPic); //壓縮至指定圖片尺寸(例如:橫400高300),保持圖片不變形,多余部分裁剪掉 BufferedImage image = ImageIO.read(fromPic); Builder<BufferedImage> builder = null; int imageWidth = image.getWidth(); int imageHeitht = image.getHeight(); if ((float)300 / 400 != (float)imageWidth / imageHeitht) { if (imageWidth > imageHeitht) { image = Thumbnails.of(fromPic).height(300).asBufferedImage(); } else { image = Thumbnails.of(fromPic).width(400).asBufferedImage(); } builder = Thumbnails.of(image).sourceRegion(Positions.CENTER, 400, 300).size(400, 300); } else { builder = Thumbnails.of(image).size(400, 300); } builder.outputFormat("jpg").toFile(toPic);
有關 Thumbnailator 類庫的操作,來自於 https://blog.csdn.net/chenleixing/article/details/44685817
感謝分享.
一鍵生成IOS App Icon工具