如何修复裁剪突出显示视图的高度,而不是使用上传的图像进行更改?
Posted
技术标签:
【中文标题】如何修复裁剪突出显示视图的高度,而不是使用上传的图像进行更改?【英文标题】:How to Fix the Height of the Cropping Highlighted View, instead of changing using uploaded Image? 【发布时间】:2016-05-11 12:34:13 【问题描述】:我正在使用以下示例代码https://github.com/mklimek/android-crop/tree/newfeature_fied_size_crop。它给出了固定大小的裁剪视图(即 HighlightView)。但问题是这个 highlightView 是固定的取决于上传的图像。下面是两个不同大小的上传图片的屏幕截图。
我使用下面的代码行来修复 HighlightView 的大小:
private void beginCrop(Uri source)
Uri outputUri = Uri.fromFile(new File(getCacheDir(), "cropped"));
new Crop(source).output(outputUri).asRectangle().withFixedSize(100, 210).start(this);
withFixedSize() 方法用于固定裁剪区域的大小,如果我们使用此方法,我们无法调整该视图的大小,这很好。但是裁剪区域应该固定为宽度=100,高度=210,它不应该改变取决于上传的图像。
大尺寸上传的图片有一个小尺寸的裁剪视图(即HighlightView):
小尺寸上传的图片有大尺寸的裁剪视图(即HighlightView):
我的要求是我必须修复裁剪区域的大小,我不应该调整它的大小。我在谷歌世界搜索。但我没有找到解决办法。
请帮帮我。
【问题讨论】:
【参考方案1】:访问:https://github.com/jdamcd/android-crop
裁剪
Crop.of(inputUri, outputUri).asSquare().start(activity)
监听裁剪的结果(如果你想做一些错误处理,请参见示例项目):
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent result)
if (requestCode == Crop.REQUEST_CROP && resultCode == RESULT_OK)
doSomethingWithCroppedImage(outputUri);
提供了一些属性来自定义裁剪屏幕。请参阅示例项目主题。
挑选
该库提供了一个实用方法来启动图像选择器:
Crop.pickImage(activity)
依赖关系
AAR 在 Maven Central 上发布:
compile 'com.soundcloud.android:android-crop:1.0.1@aar'
Java 代码:
public class MainActivity extends Activity
private ImageView resultView;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultView = (ImageView) findViewById(R.id.result_image);
@Override
public boolean onCreateOptionsMenu(Menu menu)
getMenuInflater().inflate(R.menu.activity_main, menu);
return super.onCreateOptionsMenu(menu);
@Override
public boolean onOptionsItemSelected(MenuItem item)
if (item.getItemId() == R.id.action_select)
resultView.setImageDrawable(null);
Crop.pickImage(this);
return true;
return super.onOptionsItemSelected(item);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent result)
if (requestCode == Crop.REQUEST_PICK && resultCode == RESULT_OK)
beginCrop(result.getData());
else if (requestCode == Crop.REQUEST_CROP)
handleCrop(resultCode, result);
private void beginCrop(Uri source)
Uri destination = Uri.fromFile(new File(getCacheDir(), "cropped"));
Crop.of(source, destination).asSquare().start(this);
private void handleCrop(int resultCode, Intent result)
if (resultCode == RESULT_OK)
resultView.setImageURI(Crop.getOutput(result));
else if (resultCode == Crop.RESULT_ERROR)
Toast.makeText(this, Crop.getError(result).getMessage(), Toast.LENGTH_SHORT).show();
输出:
【讨论】:
你能建议我在哪里改变逻辑吗?? 我做了同样的事情。但是裁剪后的视图大小正在改变取决于上传的图像。请通过安装此应用程序检查代码。 @SarithaG 确保上传的图片是fitXY
到ImageView
。
ImageView 不是我的问题。裁剪问题是指代码中的 HighlightView。
裁剪区域的大小已固定,用户无法更改裁剪。以上是关于如何修复裁剪突出显示视图的高度,而不是使用上传的图像进行更改?的主要内容,如果未能解决你的问题,请参考以下文章