能不能帮我做成和如何把头像做成圆形一样圆形的图片,或者做一个有第二张或者第三张文字的图片

我想自己做有字的图片,谁能高素我啊??
或者是帮我做一个
字的好看的图片,我追那个女孩呢,拜托了,我做QQ头像用!!!
用PS 就可以克
运行PS 打开你所要的图片然后左边又个画笔 你可以根据你的要求和颜色来编辑文字 只是最简单的一看就动了。
在给你补充下 详细点嘛
安装 Photoshop
最好是8.01吧 都一样没多大变化。
运行 Photoshop-文件-打开-指定你要修改的图片。
左边又个工具拦-画笔 你还可以调整画笔的粗细和颜色
改好以后最上面文件-另存为-然后格式选JPEG-保存到你指定的目录下就可以了
其他答案(共2个回答)
是这样的吗?用ACDSEE 5.0版本的很好,操作简单,易学,自带的编辑器,请见附件
默认就是发图和文字 如果只发纯文字 可以长按右上角的相机图标 (如果我的回答对你有帮助,请选择‘有用’支持一下,谢谢啦)
是用 imageready 这样的软件的制作的
每一帧上画上不同的画面 然后通过播放连续的帧达到动画的效果
或图片编辑器,首先打开图片文件,应用工具箱中的文字工具在页面中单击输入文字,调整文字属性即可
答: PP四日如何分配
答: 肯定是你机器中的FLASH播放器出现了问题。检查一下是否是。另外,像雅虎助手这样的软件其中有禁止FLASH播放的选项,看看是否是这样。
答: 肯定是你机器中的FLASH播放器出现了问题。检查一下是否是。另外,像雅虎助手这样的软件其中有禁止FLASH播放的选项,看看是否是这样。
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415项目地址:
在做电话本或者其他应用时,显示联系人头像的策略一般是这样的:先判断是否有头像图片,如果有,则直接显示图片;如果没有,则显示联系人的名字的第一个字,将这个文字作为头像,并添加背景颜色。
主要功能:1.显示圆形图像;2.显示圆形文字;3.文字大小与圆形半径的比例可以调整;4.可以添加圆形边框;5.图片、文字的显示始终是居中的;其中图片的居中规则是:如果图片宽大于高,那么截取以高为正方形的中间部分。如果图片高大于宽,那么截取以宽为正方形的中间部分。6.由于是继承于ImageView,且在onDraw()时去掉了super.onDraw(),并覆写了设置drawable的函数,因此可以直接将此view赋值给类似Glide等第三方的库,使其直接加载图片,且图片为圆形(不需要做调整);7.支持padding
注意事项:暂时不支持wrap_content模式
圆形图像显示原理:使用shader + matrix的方式显示圆形图片,其中圆形是有shader产生的,而居中的调整方式是由matrix设置的。
使用方法:
(1)设置图片或者文字的方法:
AvatarImageView aiv = (AvatarImageView) this.findViewById(R.id.aiv);
//设置图像:
aiv.setImageResource(R.drawable.id_014);
aiv.setDrawable(drawable);
aiv.setBitmap(bitmap);
aiv.setImageDrawable(drawable);
//设置文字:
aiv.setTextAndColor("安", AvatarImageView.COLORS[0]);//直接设置颜色
aiv.setTextAndColorSeed("安","安卓");//&安卓&字样作为产生backgroundcolor的seed
(2)与Glide的结合:
.with(activity)
.load(picurl)
.centerCrop()
.crossFade()
.into(aiv);
添加至工程
1.添加依赖
compile 'cn.carbs.android:AvatarImageView:1.0.1'
2.layout文件中添加此view
&cn.carbs.android.avatarimageview.library.AvatarImageView
android:id="@+id/item_avatar"
android:layout_width="60dp"
android:layout_height="60dp"
android:padding="5dp" /&
项目地址:
阅读(...) 评论()iOS实现头像选取(照相或者图片库)、大小等比缩放、生成圆形头像 - 吕滔博客
iOS实现头像选取(照相或者图片库)、大小等比缩放、生成圆形头像
&29181&次浏览
//弹出actionsheet。选择获取头像的方式
//从相册获取图片
-(void)takePictureClick:(UIButton *)sender
/*注:使用,需要实现以下协议:UIImagePickerControllerDelegate,
UINavigationControllerDelegate
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
//设置图片源(相簿)
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosA
//设置代理
picker.delegate =
//设置可以编辑
picker.allowsEditing = YES;
//打开拾取器界面
[self presentViewController:picker animated:YES completion:nil];
UIActionSheet* actionSheet = [[UIActionSheet alloc]
initWithTitle:@"请选择文件来源"
delegate:self
cancelButtonTitle:@"取消"
destructiveButtonTitle:nil
otherButtonTitles:@"照相机",@"摄像机",@"本地相簿",@"本地视频",nil];
[actionSheet showInView:self.view];
#pragma mark -
#pragma UIActionSheet Delegate
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
NSLog(@"buttonIndex = [%d]",buttonIndex);
switch (buttonIndex) {
case 0://照相机
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate =
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypeC
[self presentModalViewController:imagePicker animated:YES];
[self presentViewController:imagePicker animated:YES completion:nil];
case 1://摄像机
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate =
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypeC
imagePicker.videoQuality = UIImagePickerControllerQualityTypeL
[self presentModalViewController:imagePicker animated:YES];
[self presentViewController:imagePicker animated:YES completion:nil];
case 2://本地相簿
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate =
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoL
[self presentModalViewController:imagePicker animated:YES];
[self presentViewController:imagePicker animated:YES completion:nil];
case 3://本地视频
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate =
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoL
[self presentModalViewController:imagePicker animated:YES];
[self presentViewController:imagePicker animated:YES completion:nil];
#pragma mark -
#pragma UIImagePickerController Delegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(__bridge NSString *)kUTTypeImage]) {
UIImage *img = [info objectForKey:UIImagePickerControllerEditedImage];
[self performSelector:@selector(saveImage:)
withObject:img afterDelay:0.5];
else if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(__bridge NSString *)kUTTypeMovie]) {
NSString *videoPath = [[info objectForKey:UIImagePickerControllerMediaURL] path];
self.fileData = [NSData dataWithContentsOfFile:videoPath];
[picker dismissModalViewControllerAnimated:YES];
[picker dismissViewControllerAnimated:YES completion:nil];
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
[picker dismissModalViewControllerAnimated:YES];
[picker dismissViewControllerAnimated:YES completion:nil];
- (void)saveImage:(UIImage *)image {
NSLog(@"保存头像!");
[userPhotoButton setImage:image forState:UIControlStateNormal];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *imageFilePath = [documentsDirectory stringByAppendingPathComponent:@"selfPhoto.jpg"];
NSLog(@"imageFile-&&%@",imageFilePath);
success = [fileManager fileExistsAtPath:imageFilePath];
if(success) {
success = [fileManager removeItemAtPath:imageFilePath error:&error];
UIImage *smallImage=[self scaleFromImage:image toSize:CGSizeMake(80.0f, 80.0f)];//将图片尺寸改为80*80
UIImage *smallImage = [self thumbnailWithImageWithoutScale:image size:CGSizeMake(93, 93)];
[UIImageJPEGRepresentation(smallImage, 1.0f) writeToFile:imageFilePath atomically:YES];//写入文件
UIImage *selfPhoto = [UIImage imageWithContentsOfFile:imageFilePath];//读取图片文件
[userPhotoButton setImage:selfPhoto forState:UIControlStateNormal];
self.img.image = selfP
// 改变图像的尺寸,方便上传服务器
- (UIImage *) scaleFromImage: (UIImage *) image toSize: (CGSize) size
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newI
}2.保持原始图片的长宽比,生成需要尺寸的图片//2.保持原来的长宽比,生成一个缩略图
- (UIImage *)thumbnailWithImageWithoutScale:(UIImage *)image size:(CGSize)asize
if (nil == image) {
newimage =
CGSize oldsize = image.
if (asize.width/asize.height & oldsize.width/oldsize.height) {
rect.size.width = asize.height*oldsize.width/oldsize.
rect.size.height = asize.
rect.origin.x = (asize.width - rect.size.width)/2;
rect.origin.y = 0;
rect.size.width = asize.
rect.size.height = asize.width*oldsize.height/oldsize.
rect.origin.x = 0;
rect.origin.y = (asize.height - rect.size.height)/2;
UIGraphicsBeginImageContext(asize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
UIRectFill(CGRectMake(0, 0, asize.width, asize.height));//clear background
[image drawInRect:rect];
newimage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}3.显示圆形头像NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *imageFilePath = [documentsDirectory stringByAppendingPathComponent:@"selfPhoto.jpg"];
NSLog(@"imageFile-&&%@",imageFilePath);
UIImage *selfPhoto = [UIImage imageWithContentsOfFile:imageFilePath];//
self.img.image = selfP
[self.img.layer setCornerRadius:CGRectGetHeight([self.img bounds]) / 2];
//修改半径,实现头像的圆形化
self.img.layer.masksToBounds = YES;示例包下载:
扫一扫支付
评论数: 27
评论数: 20
评论数: 19
评论数: 14
评论数: 11
评论数: 10
评论数: 9
评论数: 8
评论数: 8
评论数: 7
你好我想问问,我启用插件后 就显示Server Error ,...
最厉害的方法
你好,我有在线录播的东西想请教你一下可以吗
然而评论并不会更新。。是插件老的问题么
挺好,在用.谢谢~
sprintf 会不会溢出呢
无论如何设置都是不生成缓存文件!始终都有一个Pragma:no...
请教一下 这个多站点 首先要得到seesionid才行 你这个...
好像不行啊 你这个实现不了多站点seesion共享
这个想法蛮独特的!
评论数: 0
评论数: 0
评论数: 6
评论数: 0
评论数: 0
评论数: 0
评论数: 0
评论数: 0
评论数: 0
评论数: 0> 博客详情
摘要: 自定义控件,重写ImageView
功能实现:点击圆形头像之后可以实现相册上传或者开启相机,然后把得到的图片经过剪裁,把剪裁过的图片设置为头像的背景图
转载请标明出处https://my.oschina.net/FlyinTang/blog/751595
最近的一些学习心得
功能实现:点击圆形头像之后可以实现相册上传或者开启相机,然后把得到的图片经过剪裁,把剪裁过的图片设置为头像的背景图
步骤:第一步:自定义一个类,继承ImageView,重写draw方法,实现外观为圆形
第二步:在xml文件中引用该控件
第三步:实现圆形头像的点击事件,点击后显示对话框界面,询问你是打开相册还是相机(自动省略显示对话框的代码)
第四步:根据用户选择情况,打开相册或者相机
第五步:将拍摄的图片或者相册选中的图片进行剪裁,将结果保存在指定内存区域
第六步:更新头像图片
具体实现:第一步:自定义一个类,继承ImageView,重写draw方法,实现外观为圆形
//圆形头像类
public class MyRoundPhoto extends ImageView{
private int wAndHeight[]=new int[2];
public MyRoundPhoto(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
//获得控件长宽(px)
wAndHeight = getWidthAndHeight(context,attrs);
this.context =
//初始化控件
public MyRoundPhoto(Context context) {
super(context);
// TODO Auto-generated constructor stub
//获得控件长宽(px)
wAndHeight=getWidthAndHeight(context,attrs);
this.context =
public MyRoundPhoto(Context context, AttributeSet attrs) {
super(context, attrs);
//获得控件长宽(px)
wAndHeight=getWidthAndHeight(context,attrs);
// TODO Auto-generated constructor stub
this.context =
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawBitmap(bitmap, new Matrix(), p);
private void init(){
//从手机存储区域获取图片文件(该位置为手机相册选中的图片经过剪裁后的图片的存储路径)
file = new File(Environment.getExternalStorageDirectory(),Info.PHOTO_NAME);
//如果图片文件存在,则显示,否则则创建并显示
if(file.exists()){
Log.v("文件存在", "是");
this.bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
Log.v("文件不存在", "是");
//生成默认图片的文件
this.bitmap=BitmapFactory.decodeStream(context.getResources().openRawResource(R.drawable.defalut));
//person.setPicture()
FileOutputStream fos=
fos = new FileOutputStream(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
pressFormat.PNG, 100, fos); //压缩
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//将方形的位图转换为圆形的位图
this.bitmap = toRoundBitmap(this.bitmap);
p = new Paint();
private Bitmap toRoundBitmap(Bitmap map){
//int height = map.getHeight()+100;
int height=convertDIP2PX(context,this.wAndHeight[1]); //位图的高度(px)
int width = convertDIP2PX(context,this.wAndHeight[0]);//位图的宽度(px)
//创建画布
Bitmap bit = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Canvas canvas = new Canvas(bit);
Paint paint = new Paint();
paint.setAntiAlias(false);
int r = (width&height)?height:
//绘制圆形
RectF rectF = new RectF(0,0,r,r);
canvas.drawRoundRect(rectF, r/2, r/2, paint);
//canvas.drawARGB(0, 0, 0, 0);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(map, null,rectF, paint);
//返回圆形位图
//使当前视图无效,从而使系统重新绘制视图
public void myValidate(){
bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
bitmap=toRoundBitmap(bitmap);
invalidate();
//将dp转换为px
private static int convertDIP2PX(Context context, int dip) {
float scale = context.getResources().getDisplayMetrics().
return (int)(dip*scale + 0.5f*(dip&=0?1:-1));
//根据xml文件中的属性,返回宽高(px)
private static int[] getWidthAndHeight(Context context,AttributeSet attrs){
int height,
int n = attrs.getAttributeCount();
int wAndH[] = new int[2];
for(int i=0;i&n;i++){
String str = attrs.getAttributeName(i);
//获取宽度
if(str.equals("layout_width")){
//System.out.println(attrs.getAttributeName(0));
String sttr = attrs.getAttributeValue(i);
String temp = "";
while(sttr.charAt(j)&='0'&&sttr.charAt(j)&='9'){
temp+=sttr.charAt(j);
wAndH[0]=Integer.parseInt(temp);
//获取长度
if(str.equals("layout_height")){
//System.out.println(attrs.getAttributeName(1));
String sttr = attrs.getAttributeValue(i);
String temp = "";
while(sttr.charAt(j)&='0'&&sttr.charAt(j)&='9'){
temp+=sttr.charAt(j);
//System.out.println("temp"+temp);
wAndH[1]=Integer.parseInt(temp);
return wAndH;
第二步:在xml文件中引用该控件
&com.包名.MyRoundPhoto
android:id="@+id/myRoundPhoto"
android:layout_width="100dp"
android:layout_height="100dp"
&/com.包名.MyRoundPhoto&
第三步:实现圆形头像的点击事件,点击后显示对话框界面,询问你是打开相册还是相机(自动省略显示对话框的代码)
public void onClick(View v) {
// TODO Auto-generated method stub
//点击头像
if(v.getId()==R.id.myRoundPhoto){
//打开DialogActivity,询问打开照相机还是相册
Intent intent = new Intent(GuideActivity.this,DialogActivity.class);
startActivityForResult(intent, Info.PICK_PHOTO);
&第四步:根据用户选择情况,打开相册或者相机
image =new File(Environment.getExternalStorageDirectory(),Info.PHOTO_NAME);
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
//打开相机
case R.id.imageButton1:{
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));
startActivityForResult(intent, Info.OPEN_CAMERA);
//打开相册
case R.id.imageButton2:{
Intent intent = new Intent(Intent.ACTION_PICK);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));
intent.setType("image/*");
startActivityForResult(intent, Info.OPEN_GALLERY);
第五步:将拍摄的图片或者相册选中的图片进行剪裁,将结果保存在指定内存区域
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode){
//打开相机
case Info.OPEN_CAMERA:{
if(resultCode==RESULT_OK){
//启动裁剪activity
Log.v("启动剪裁程序", "是的");
Intent intent1 = new Intent("com.android.camera.action.CROP");
intent1.setDataAndType(Uri.fromFile(image), "image/*");
intent1.putExtra("crop", "true");
intent1.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));//
intent1.putExtra("aspectX", 1);
intent1.putExtra("aspectY", 1);
intent1.putExtra("outputFormat", pressFormat.JPEG);
intent1.putExtra("outputX", 720);
intent1.putExtra("outputY", 720);
intent1.putExtra("return-data", false);
startActivityForResult(intent1, Info.CROP_PHOTO);
//打开相册
case Info.OPEN_GALLERY:{
if(resultCode==RESULT_OK){
//启动剪裁程序
Log.v("启动剪裁程序", "是的");
Intent intent1 = new Intent("com.android.camera.action.CROP");
intent1.setDataAndType(Uri.fromFile(image), "image/*");
intent1.putExtra("crop", "true");
intent1.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));//
intent1.putExtra("aspectX", 1);
intent1.putExtra("aspectY", 1);
intent1.putExtra("outputFormat", pressFormat.JPEG);
intent1.putExtra("outputX", 720);
intent1.putExtra("outputY", 720);
intent1.putExtra("return-data", false);
startActivityForResult(intent1, Info.CROP_PHOTO);
//裁剪图片
case Info.CROP_PHOTO:{
Intent intent=new Intent();
setResult(this.RESULT_OK, intent);
第六步:更新头像图片
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode){
//选择头像
case Info.PICK_PHOTO:{
//如果摄取图片成功
if(resultCode==RESULT_OK){
Log.v("requstCodeGuideOne", "PICK_PHOTO");
btn_choosePhoto.myValidate(); //使原有视图无效,从而使系统重新绘制视图
注意:需要添加的权限
&uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
&uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&
人打赏支持
码字总数 11123
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥

我要回帖

更多关于 怎么把图片做成圆形 的文章

 

随机推荐