iOS 将一个文件夹下的所有3倍图自动转成2倍图程序源码

如果开发iOS的话,有的时候来不及将所有的三倍图转成2倍图,可以写一个Mac版本的命令行小工具,自动将一个文件夹下的所有三倍尺寸的图片转成2倍图片,并且将[email protected]命令为[email protected]。当然还是有设计一张一张切出来也是可以的,这里只是提供了一个快捷的方法

也可以自己修改里面的比例,自动裁剪出更多尺寸的图片或者支持更多的功能

值得注意的是,Mac版本的裁剪也需要考虑屏幕是否是高清屏幕, 下面是一些主要部分的代码:

<pre name="code" class="objc">CGFloat scale = [NSScreen mainScreen].backingScaleFactor;
NSLog(@"scale: %f", scale);
CGFloat scaleFactor = 1.0 / scale;
// 下面是裁剪的时候,需要转换图片的尺寸。
NSSize newSize = NSMakeSize(image.pixelsWide * scaleFactor * 2.0 / 3.0, image.pixelsHigh * scaleFactor * 2.0 / 3.0);

NSImage *newImage = [self resizeImage:image size:newSize];

NSData *outputData= [newImage TIFFRepresentation];
NSBitmapImageRep *imageRep = [NSBitmapImageRep imageRepWithData:outputData];
NSDictionary *imageProps = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:0.9] forKey:NSImageCompressionFactor];
NSData *data = [imageRep representationUsingType:NSPNGFileType properties:imageProps];

BOOL ok = [data writeToFile:newPath atomically:YES];
NSLog(@"save %@ ok:%@", newPath, ok ? @"YES" : @"NO");

代码中新图片使用的PNG格式,如果需要使用JPEG格式的话,可以自己下载代码进行修改。

代码下载地址:

http://download.csdn.net/detail/liyan223/8327709

代码运行方式:

clang++ -o imageResizer main.mm -framework Foundation -framework Cocoa -framework QuartzCore
./imageResizer imageFolderPath

当然上面只是其中的一种方式,也可以利用上面的代码,自己简单地加一个图形界面

时间: 2024-08-07 14:46:50

iOS 将一个文件夹下的所有3倍图自动转成2倍图程序源码的相关文章

07.把文件夹下(包括子目录)的所有bmp转成jpg

Xnview的浏览器: 工具 - 批量转换,配置之后,输出可以导出bat脚本,脚本里用的是nconvert.exe 这里可以批量转换文件夹包括子文件夹的,但是不能只转换指定格式的(bmp格式); 所以自己动手写个bat @rem 作用:把文件夹下的所有的bmp文件转成jpg格式;nconvert的命令语法是从XnView导出的; @rem 用法: @rem 其他: @rem 2015/12/20 周日 14:34:30.37 @echo off&SetLocal EnableDelayEdexp

将一个文件夹下的所有文件重命名

public static void renamePic(){ File f = new File("/home/y/my_temp/ydbg-xy-pic-dest"); File files[] = f.listFiles(); for(File file:files){ File newfile=new File("/home/y/my_temp/ydbg-xy-pic-dest/"+file.getName().substring(10)); file.re

iOS NSFileManeger 计算文件是否超时,和计算文件夹下文件的总大小

//获得指定文件距离上次修改时间是否达到了指定值(秒)timeout +(BOOL)isTimeout:(NSString *)path time:(NSTimeInterval)timeout { //获得当前时间 NSTimeInterval now = [[NSDate date] timeIntervalSince1970]; NSDictionary *dict = [[NSFileManager defaultManager] attributesOfItemAtPath:path

Linux 将文件夹下的所有文件复制到另一个文件里

如何将文件夹/home/work下的文件复制到/home/temp里面? 使用命令: cp -R /home/work/* /home/temp *表示所有文件 但是/home/work 下的隐藏文件都不会被拷贝 更好的复制的方法是用"."代替"*"就好了. cp -R /home/work/.  /home/temp 将一个文件夹复制到另一个文件夹下,例如将/home下的work文件夹复制到temp下面 命令为: cp -R /home/work  /home/t

删除沙盒中文件夹下所有文件

有时候需要在iOS系统里面,删除指定文件夹的内容,文件夹里面可能是文件,也可能包含有文件夹. 删除指定类型的文件.方法如下: NSString *extension = @"m4r"; NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,

如何将一个文件夹复制到另一个文件夹中并保留其权限

概要 本文分步介绍了如何将一个文件夹复制到另一个文件夹中并保留其权限.   当您使用 Windows Explorer 复制或移动文件和文件夹时,在这些文件或文件夹上设置的权限可能会发生改变.例如,当您在一个 NTFS 文件系统卷内或在两个 NTFS 卷之间复制一个文件时,Windows 2000 将把它当作一个新文件.作为一个新文件,它将具有目标文件夹的权限,您将成为"创建者所有者".    注意:您必须对目标文件夹具有"写"权限才能复制文件和文件夹.    可以

JavaSE8基础 File list 获取指定文件夹下的第一层文件和文件夹的名字

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0) information: 被查看文件夹中的内容截图. code: package jizuiku0; import java.io.File; /* * @version V17.09 */ public class GetName { public static void main(String[] args) { String

matlab 把一个文件夹下的所有图片(可以包含在子文件夹下)考到指定文件夹下

clc;clear all; maindir = 'C:\Users\wang\Desktop\iLIDS-VID\i-LIDS-VID\images\cam2';subdir = dir( maindir ); % 先确定子文件夹 for i = 1 : length( subdir ) if( isequal( subdir( i ).name, '.' ) || ... isequal( subdir( i ).name, '..' ) || ... ~subdir( i ).isdir

android开发步步为营之54:读取assets,raw文件夹下文件

一.读取assets文件下文件products.json public String readAssetFile(Context c, String file) { Elapsed profiler = new Elapsed(); BufferedReader bufReader = null; try { InputStreamReader inputReader = new InputStreamReader(c.getResources().getAssets().open(file))