开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:527

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 109|回复: 11

[脚本] unity调用ios和安卓的相册,并裁剪

[复制链接]  [移动端链接]
7日久生情
2242/5000
排名
653
昨日变化

8

主题

203

帖子

2242

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
114960
好友
2
蛮牛币
5607
威望
0
注册时间
2015-7-24
在线时间
827 小时
最后登录
2018-5-24
QQ
发表于 2018-5-16 16:53:20 | 显示全部楼层 |阅读模式
20蛮牛币
我需要使用做一个自己选头像的功能,需要使用unity打开安卓或者是ios的相册,选择一张照片,并进行裁剪,然后保存为头像,求提供一个demo或者是相关脚本。

[发帖际遇]: 纳兰幽鬼 发帖时在路边捡到 2 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复

使用道具 举报

排名
23156
昨日变化
8

0

主题

30

帖子

66

积分

Rank: 2Rank: 2

UID
231366
好友
1
蛮牛币
128
威望
0
注册时间
2017-7-10
在线时间
20 小时
最后登录
2018-5-25
发表于 2018-5-16 19:07:51 | 显示全部楼层
我有一个没有裁切的demo你要吗

回复

使用道具 举报

排名
24550
昨日变化
1765

0

主题

18

帖子

55

积分

Rank: 2Rank: 2

UID
281571
好友
1
蛮牛币
152
威望
0
注册时间
2018-5-17
在线时间
21 小时
最后登录
2018-5-27
发表于 2018-5-17 12:41:04 | 显示全部楼层
在Java代码中调用相册和裁剪回调在C#

回复

使用道具 举报

7日久生情
2242/5000
排名
653
昨日变化

8

主题

203

帖子

2242

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
114960
好友
2
蛮牛币
5607
威望
0
注册时间
2015-7-24
在线时间
827 小时
最后登录
2018-5-24
QQ
 楼主| 发表于 2018-5-18 09:37:02 | 显示全部楼层
安生李 发表于 2018-5-16 19:07
我有一个没有裁切的demo你要吗

是那种插件类型吗,我有一个所有功能都有的unity包,但是是主程序入口,这个是不行的
[发帖际遇]: 纳兰幽鬼 发帖时在路边捡到 2 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复

使用道具 举报

排名
23156
昨日变化
8

0

主题

30

帖子

66

积分

Rank: 2Rank: 2

UID
231366
好友
1
蛮牛币
128
威望
0
注册时间
2017-7-10
在线时间
20 小时
最后登录
2018-5-25
发表于 2018-5-18 10:22:25 | 显示全部楼层
纳兰幽鬼 发表于 2018-5-18 09:37
是那种插件类型吗,我有一个所有功能都有的unity包,但是是主程序入口,这个是不行的 ...

不是,就我自己写的代码

回复

使用道具 举报

5熟悉之中
639/1000
排名
3652
昨日变化
14

1

主题

96

帖子

639

积分

Rank: 5Rank: 5

UID
201034
好友
7
蛮牛币
921
威望
0
注册时间
2017-1-11
在线时间
190 小时
最后登录
2018-5-26
发表于 2018-5-18 15:36:08 | 显示全部楼层
安生李 发表于 2018-5-18 10:22
不是,就我自己写的代码

能发给我一下吗?谢谢啦
[发帖际遇]: 一个袋子砸在了 安然_z9vQ2 头上,安然_z9vQ2 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

5熟悉之中
639/1000
排名
3652
昨日变化
14

1

主题

96

帖子

639

积分

Rank: 5Rank: 5

UID
201034
好友
7
蛮牛币
921
威望
0
注册时间
2017-1-11
在线时间
190 小时
最后登录
2018-5-26
发表于 2018-5-18 15:37:39 | 显示全部楼层
安生李 发表于 2018-5-18 10:22
不是,就我自己写的代码

能发给我一下吗?谢谢啦

回复

使用道具 举报

排名
23156
昨日变化
8

0

主题

30

帖子

66

积分

Rank: 2Rank: 2

UID
231366
好友
1
蛮牛币
128
威望
0
注册时间
2017-7-10
在线时间
20 小时
最后登录
2018-5-25
发表于 2018-5-18 15:46:07 | 显示全部楼层
安然_z9vQ2 发表于 2018-5-18 15:37
能发给我一下吗?谢谢啦

稍等     dddddddd
[发帖际遇]: 安生李 乐于助人,奖励 3 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

排名
23156
昨日变化
8

0

主题

30

帖子

66

积分

Rank: 2Rank: 2

UID
231366
好友
1
蛮牛币
128
威望
0
注册时间
2017-7-10
在线时间
20 小时
最后登录
2018-5-25
发表于 2018-5-18 15:55:15 | 显示全部楼层
安生李 发表于 2018-5-18 15:46
稍等     dddddddd

using System.IO;
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;

public class IOSText : MonoBehaviour {
   
    GameObject unitif;
    WWW www;
    [DllImport("__Internal")
    private static extern void IOS_OpenCamera();

    [DllImport("__Internal")
    private static extern void IOS_OpenAlbum();


    public int count = 0;

    public static IOSText init;

    private string SaveCounter= "/Counter.txt";

     void Awake()
    {
        string Checkpointpath = Application.persistentDataPath + SaveCounter;
        if (!File.Exists(Checkpointpath))
        {
            string starInfor = 0.ToString();
            File.WriteAllText(Checkpointpath, starInfor);
        }
        else
        {
            string infor = File.ReadAllText(Checkpointpath);
            count = int.Parse(infor);

        }
      

    }
   

    public void OpenCamera()
{
        Debug.Log("打开相机");  
#if UNITY_IPHONE
        IOS_OpenCamera();
        #endif
}




public void OpenAlbum()
{
        Debug.Log("打开相册");   
#if UNITY_IPHONE
        IOS_OpenAlbum();
        #endif
}  


    public void IOSBack(string vName)
{
        string readAddr = "file://" + Application.persistentDataPath + "/";

        string pos = readAddr + vName;
        if (!string.IsNullOrEmpty(vName))
        {
            Debug.Log(vName);
            StartCoroutine(LoadTexture(pos));
            LOadRawImage();
           
        }
}

    IEnumerator  LoadTexture(string name)
    {
        string saveAddr=Application.persistentDataPath + "/" + count.ToString()+".png";
        string readAddr = "file://" + Application.persistentDataPath + "/"+count.ToString()+".png";
        yield return null;
        www = new WWW(name);
        yield return www;
        byte[ byt = www.texture.EncodeToPNG();
        File.WriteAllBytes(saveAddr, byt);
      
        yield return new WaitForSeconds(1f);
        StartCoroutine(aa(count, readAddr));
        Debug.Log("count:"+count);

        count++;
        SaveCounterToFile();
    }

    IEnumerator aa(int counter,string path)
    {
        Debug.Log("刷新相册");
        string  CheckpointfileName = "/Checkpoint.txt";
        string Checkpointpath = Application.persistentDataPath + CheckpointfileName;
      
        if (!File.Exists(Checkpointpath))
        {
            string starInfor = counter + 1000 + "|" + counter + "|" + path + "|0|1";
            File.WriteAllText(Checkpointpath, starInfor);
        }
        else
        {
            string aasd = counter+1000 + "|" + counter + "|" + path + "|0|1";
            checkpointManger.GetMgr().SaveLevel(aasd);

        }
        yield return new WaitForSeconds(1f);
        InventoryManager.GetMgr().ParseTxtFile1();//本地
        yield return new WaitForSeconds(0.5f);
        UIWindow_Bag.instance.MyToggle1();
        Destroy(unitif);
        //unitif.Stop();
    }




  
    void SaveCounterToFile()
    {
        string Checkpointpath = Application.persistentDataPath + SaveCounter;
        string starInfor = count.ToString();
        Debug.Log("本地相册个数要保存" + starInfor);
        File.WriteAllText(Checkpointpath, starInfor);
    }


    void  LOadRawImage()
    {
        unitif = new GameObject();
        unitif.AddComponent<UniGifTexture>();

    }
}
























#import <quartzCore/CADisplayLink.h>
@interface UnityTest:UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate>

@end

xcode添加以下文件  和  权限

#import "UnityTest.h"
@implementation UnityTest
-(void)OpenTarget :(UIImagePickerControllerSourceType) type{

    UIImagePickerController *picker;
    picker=[[UIImagePickerController alloc] init];

    picker.delegate= self;
    picker.allowsEditing=YES;
    picker.sourceType = type;

    [self presentViewController:picker animated:YES completion:nil];
}

-(void)imagePickerController:(UIImagePickerController *)pic didFinishPickingMediaWithInfo:(NSDictionary *)
info
{
    [pic dismissViewControllerAnimated:YES completion:nil];
    UIImage *image=info[UIImagePickerControllerOriginalImage];
    NSString *imagePath=[self GetSavePath:@"Temp.jpg"];
    [self SaveFileToDoc:image path:imagePath];
    //  [vc.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

}

-(NSString *)GetSavePath:(NSString *)filename{

    NSArray *pathArray=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docPath=[pathArray objectAtIndex:0];
    return [docPath stringByAppendingPathComponent:filename];
}

-(void) SaveFileToDoc:()image path:()path{

    NSData *data;
    if(UIImagePNGRepresentation(image)==nil){
        data=UIImageJPEGRepresentation(image,1);
    }
    else{
        data=UIImagePNGRepresentation(image);
    }
[data writeToFile:path atomically:YES];
    UnitySendMessage("Canvas","IOSBack","Temp.jpg");
}



-(void)imagePickerControllerDidCancel:(UIImagePickerController *) picker{
    UnitySendMessage("Canvas","IOSBack","");
[pic dismissViewControllerAnimated:YES completion:nil];
}

extern "C"{


    void IOS_OpenCamera()
    {
        UnityTest *app=[[UnityTest alloc] init];
        UIViewController *vc=UnityGetGLViewController();
        [vc.view addSubview:app.view];
        [app OpenTarget:UIImagePickerControllerSourceTypeCamera];
    }


    void IOS_OpenAlbum()
    {
        UnityTest *app=[[UnityTest alloc] init];
        UIViewController *vc=UnityGetGLViewController();
        [vc.view addSubview:app.view];
        [app OpenTarget:UIImagePickerControllerSourceTypePhotoLibrary];
    }
}
@end



#import "UnityTest.h"
@implementation UnityTest
-(void)OpenTarget :(UIImagePickerControllerSourceType) type{

    UIImagePickerController *picker;
    picker=[[UIImagePickerController alloc] init];

    picker.delegate= self;
    picker.allowsEditing=false;//是否可编辑
    picker.sourceType = type;

    [self presentViewController:picker animated:YES completion:nil];
}

-(void)imagePickerController:(UIImagePickerController *)pic didFinishPickingMediaWithInfo:(NSDictionary *)
info
{
    [pic dismissViewControllerAnimated:YES completion:nil];//关闭相册
    UIImage *image=info[UIImagePickerControllerOriginalImage];
    NSString *imagePath=[self GetSavePath:@"Temp.jpg"];
    [self SaveFileToDoc:image path:imagePath];
    //  [vc.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

}

-(NSString *)GetSavePath:(NSString *)filename{

    NSArray *pathArray=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docPath=[pathArray objectAtIndex:0];
    return [docPath stringByAppendingPathComponent:filename];
}

-(void) SaveFileToDoc:()image path:()path{

    NSData *data;
    if(UIImagePNGRepresentation(image)==nil){
        data=UIImageJPEGRepresentation(image,1);
    }
    else{
        data=UIImagePNGRepresentation(image);
    }
    [data writeToFile:path atomically:YES];
    UnitySendMessage("Canvas","IOSBack","Temp.jpg");//回调
}



-(void)imagePickerControllerDidCancel:(UIImagePickerController *) picker{
    //UnitySendMessage("Canvas","IOSBack","");
    [picker dismissViewControllerAnimated:YES completion:nil];
}

extern "C"{


    void IOS_OpenCamera()
    {
        UnityTest *app=[[UnityTest alloc] init];
        UIViewController *vc=UnityGetGLViewController();
        [vc.view addSubview:app.view];
        [app OpenTarget:UIImagePickerControllerSourceTypeCamera];
    }


    void IOS_OpenAlbum()
    {
        UnityTest *app=[[UnityTest alloc] init];
        UIViewController *vc=UnityGetGLViewController();
        [vc.view addSubview:app.view];
        [app OpenTarget:UIImagePickerControllerSourceTypePhotoLibrary];
    }
}
@end




回复

使用道具 举报

排名
23156
昨日变化
8

0

主题

30

帖子

66

积分

Rank: 2Rank: 2

UID
231366
好友
1
蛮牛币
128
威望
0
注册时间
2017-7-10
在线时间
20 小时
最后登录
2018-5-25
发表于 2018-5-18 16:08:46 | 显示全部楼层
你把你的插件发我看看,或许能改以下变成可用

回复

使用道具 举报

7日久生情
2242/5000
排名
653
昨日变化

8

主题

203

帖子

2242

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
114960
好友
2
蛮牛币
5607
威望
0
注册时间
2015-7-24
在线时间
827 小时
最后登录
2018-5-24
QQ
 楼主| 发表于 2018-5-18 16:20:36 | 显示全部楼层
安生李 发表于 2018-5-18 16:08
你把你的插件发我看看,或许能改以下变成可用

给我一个你的邮箱,我发给你,我的是主程序入口,希望能把他改成引用工程

回复

使用道具 举报

排名
23156
昨日变化
8

0

主题

30

帖子

66

积分

Rank: 2Rank: 2

UID
231366
好友
1
蛮牛币
128
威望
0
注册时间
2017-7-10
在线时间
20 小时
最后登录
2018-5-25
发表于 2018-5-18 16:39:36 | 显示全部楼层
纳兰幽鬼 发表于 2018-5-18 16:20
给我一个你的邮箱,我发给你,我的是主程序入口,希望能把他改成引用工程 ...

15534137876@163.com

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关闭

站长推荐 上一条 /1 下一条

快速回复 返回顶部 返回列表